img_upload.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. //**********************图片上传预览插件************************
  2. //说明:图片上传预览插件
  3. //上传的时候可以生成固定宽高范围内的等比例缩放图
  4. //参数设置:
  5. //width 存放图片固定大小容器的宽
  6. //height 存放图片固定大小容器的高
  7. //imgDiv 页面DIV的JQuery的id
  8. //imgType 数组后缀名
  9. //**********************图片上传预览插件*************************
  10. (function($) {
  11. jQuery.fn.extend({
  12. uploadPreview: function(opts) {
  13. opts = jQuery.extend({
  14. width: 0,
  15. height: 0,
  16. imgDiv: "#imgDiv",
  17. imgType: ["gif", "jpeg", "jpg", "bmp", "png"],
  18. callback: function() { return false; }
  19. }, opts || {});
  20. var _self = this;
  21. var _this = $(this);
  22. var imgDiv = $(opts.imgDiv);
  23. imgDiv.width(opts.width);
  24. imgDiv.height(opts.height);
  25. autoScaling = function() {
  26. if ($.browser.version == "7.0" || $.browser.version == "8.0") imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
  27. var img_width = imgDiv.width();
  28. var img_height = imgDiv.height();
  29. if (img_width > 0 && img_height > 0) {
  30. var rate = (opts.width / img_width < opts.height / img_height) ? opts.width / img_width : opts.height / img_height;
  31. if (rate <= 1) {
  32. if ($.browser.version == "7.0" || $.browser.version == "8.0") imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "scale";
  33. imgDiv.width(img_width * rate);
  34. imgDiv.height(img_height * rate);
  35. } else {
  36. imgDiv.width(img_width);
  37. imgDiv.height(img_height);
  38. }
  39. var left = (opts.width - imgDiv.width()) * 0.5;
  40. var top = (opts.height - imgDiv.height()) * 0.5;
  41. imgDiv.css({ "margin-left": left, "margin-top": top });
  42. imgDiv.show();
  43. }
  44. }
  45. _this.change(function() {
  46. if (this.value) {
  47. if (!RegExp("\.(" + opts.imgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
  48. alert("图片类型必须是" + opts.imgType.join(",") + "中的一种");
  49. this.value = "";
  50. return false;
  51. }
  52. imgDiv.hide();
  53. if ($.browser.msie) {
  54. if ($.browser.version == "6.0") {
  55. var img = $("<img />");
  56. imgDiv.replaceWith(img);
  57. imgDiv = img;
  58. var image = new Image();
  59. image.src = "file:///" + this.value;
  60. imgDiv.attr("src", image.src);
  61. autoScaling();
  62. }
  63. else {
  64. imgDiv.css({ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image)" });
  65. imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
  66. try {
  67. imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = this.value;
  68. } catch (e) {
  69. alert("无效的图片文件!");
  70. return;
  71. }
  72. setTimeout("autoScaling()", 100);
  73. }
  74. }
  75. else {
  76. var img = $("<img />");
  77. imgDiv.replaceWith(img);
  78. imgDiv = img;
  79. imgDiv.attr("src", this.files.item(0).getAsDataURL());
  80. imgDiv.css({ "vertical-align": "middle" });
  81. setTimeout("autoScaling()", 100);
  82. }
  83. }
  84. });
  85. }
  86. });
  87. })(jQuery);