IE9下本地图片预览JS代码修改

Bertha 。 2022-06-13 12:47 371阅读 0赞

AlphaImageLoader

说明:

在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。

语法:

filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

enabled:可选项。布尔值(Boolean)。设置或检索滤镜是否激活。
true:默认值。滤镜激活。
false:滤镜被禁止。

sizingMethod:可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。
crop:剪切图片以适应对象尺寸。
image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
scale:缩放图片以适应对象的尺寸边界。

src:必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。


具体操作:

  1. 为预览区域(比如要在某个 div 中预览)添加样式:filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);。
  2. 为 AlphaImageLoader 设置 src 属性。

示例代码:


  1. <form id="imgup" method="post" enctype="multipart/form-data" action="picup.ashx">
  2. <input type="file" name="upf" id="fileup" οnchange="dox(this)" />
  3. </form>
  4. <div id="tp" style="width:200px;height:200px"></div>
  5. <script type="text/javascript" charset="utf-8" language="javascript">
  6. function dox(obj)
  7. {
  8. obj.select();
  9. obj.blur();
  10. var nfile = document.selection.createRange().text;
  11. alert("当前选择的文件完整路径是:"+nfile);
  12. document.selection.empty(); document.getElementById("tp").style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src='"+nfile+"')";
  13. }
  14. </script>

示例代码:

  1. <? xml version="1.0" encoding="gb2312" ?>
  2. <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
  3. < html xmlns ="http://www.w3.org/1999/xhtml" >
  4. < head >
  5. < meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
  6. < title > 本地图片预览代码(支持 IE6、IE7) </ title >
  7. < style type ="text/css" >
  8. #newPreview
  9. {} {
  10. filter : progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale) ;
  11. }
  12. </ style >
  13. < script type ="text/javascript" language ="javascript" >
  14. <!--
  15. function PreviewImg(imgFile)
  16. {
  17. // 原来的预览代码,不支持 IE7。
  18. var oldPreview = document.getElementById( " oldPreview " );
  19. oldPreview.innerHTML = " <img src=\ " file:\\\\ " + imgFile.value + " \ " width=\ " 80 \ " height=\ " 60 \ " /> " ;
  20. // 新的预览代码,支持 IE6、IE7。
  21. var newPreview = document.getElementById( " newPreview " );
  22. newPreview.filters.item( " DXImageTransform.Microsoft.AlphaImageLoader " ).src = imgFile.value;
  23. newPreview.style.width = " 80px " ;
  24. newPreview.style.height = " 60px " ;
  25. }
  26. -->
  27. </ script >
  28. </ head >
  29. < body >
  30. < p > 说明:以下针对的是互联网情况,如果您在本地作测试,比如输入的地址是:http://127.0.0.1/,则可以看到全部预览。 </ p >
  31. < hr />
  32. < p > 如果您使用的是 IE6,则可以看到以下预览;如果您使用的是 IE7,则看不到以下预览。 </ p >
  33. < div id ="oldPreview" ></ div >
  34. < hr />
  35. < p > 不论您使用的是 IE6 还是 IE7,均可以看到以下预览。 </ p >
  36. < div id ="newPreview" ></ div >
  37. < hr />
  38. < p > 请选择一个图片进行预览: < input type ="file" size ="20" onchange ="javascript:PreviewImg(this);" /></ p >
  39. </ body >
  40. </ html >

示例代码3:

  1. <p><style type="text/css">
  2. #kk{
  3. width:400px;
  4. height:400px;
  5. overflow: hidden;
  6. }
  7. #preview_wrapper{
  8. width:300px;
  9. height:300px;
  10. background-color:#CCC;
  11. overflow: hidden;
  12. }
  13. #preview_fake{ /* 该对象用于在IE下显示预览图片 */
  14. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
  15. width:300px;
  16. overflow: hidden;
  17. }
  18. #preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */
  19. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
  20. width:300px;
  21. visibility:hidden;
  22. overflow: hidden;
  23. }
  24. #preview{ /* 该对象用于在FF下显示预览图片 */
  25. width:300px;
  26. height:300px;
  27. overflow: hidden;
  28. }
  29. </style><script type="text/javascript">
  30. function onUploadImgChange(sender){
  31. if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){
  32. alert('图片格式无效!');
  33. return false;
  34. }
  35. var objPreview = document.getElementById('preview');
  36. var objPreviewFake = document.getElementById('preview_fake');
  37. var objPreviewSizeFake = document.getElementById('preview_size_fake');
  38. if( sender.files && sender.files[0] ){
  39. objPreview.style.display = 'block';
  40. objPreview.style.width = 'auto';
  41. objPreview.style.height = 'auto';
  42. // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
  43. objPreview.src = sender.files[0].getAsDataURL();
  44. }else if( objPreviewFake.filters ){
  45. // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果
  46. //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决
  47. // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
  48. sender.select();
  49. sender.blur();
  50. var imgSrc = document.selection.createRange().text;
  51. objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
  52. objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
  53. alert("已成功选择图片!");
  54. autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );
  55. objPreview.style.display = 'none';
  56. }
  57. }
  58. function onPreviewLoad(sender){
  59. autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );
  60. }
  61. function autoSizePreview( objPre, originalWidth, originalHeight ){
  62. var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );
  63. objPre.style.width = zoomParam.width + 'px';
  64. objPre.style.height = zoomParam.height + 'px';
  65. objPre.style.marginTop = zoomParam.top + 'px';
  66. objPre.style.marginLeft = zoomParam.left + 'px';
  67. }
  68. function clacImgZoomParam( maxWidth, maxHeight, width, height ){
  69. var param = { width:width, height:height, top:0, left:0 };
  70. if( width>maxWidth || height>maxHeight ){
  71. rateWidth = width / maxWidth;
  72. rateHeight = height / maxHeight;
  73. if( rateWidth > rateHeight ){
  74. param.width = maxWidth;
  75. param.height = height / rateWidth;
  76. }else{
  77. param.width = width / rateHeight;
  78. param.height = maxHeight;
  79. }
  80. }
  81. param.left = (maxWidth - param.width) / 2;
  82. param.top = (maxHeight - param.height) / 2;
  83. return param;
  84. }
  85. </script> <input name="localfile" type="file" id="localfile" size="28" οnchange="onUploadImgChange(this)"/> <!--以下是预览图片用的-->
  86. <div id="kk">
  87. <div id="preview_wrapper">
  88. <div id="preview_fake">
  89. <img id="preview" src="" οnlοad="onPreviewLoad(this)"/>
  90. </div>
  91. </div>
  92. <br/>
  93. <img id="preview_size_fake" />
  94. </div></p>

发表评论

表情:
评论列表 (有 0 条评论,371人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IE9平台版4 发布

    今天IE团队发布了IE Platform Preview 4。 新版本的IE内核速度再上一个台阶, 对Web标准的支持也进一步增强, Acid3 的分数已经到了95分,相比 P