【问题标题】:Drag and drop image, returns wrong size拖放图像,返回错误大小
【发布时间】:2014-04-22 22:23:45
【问题描述】:

我使用预制脚本将图像从计算机文件夹中拖放到 div 中(请参阅 JSFiddle:http://jsfiddle.net/JtJ5N/1/)。脚本工作正常,但我在检索图像大小时遇到​​问题 - 第一次获取新图像。

奇怪的是,我第一次将图像拖到 div 中时,它返回了 height(24) 和 width(24),这是不正确的。但是,如果我重新加载页面,并再次拖动相同的图像,大小是正确的!

第一次将新图片拖入div:

第二次拖动同一张图片,重新加载页面后:

对我来说没有任何意义,因为不应该保存任何东西。请参阅上面的 JSFiddle 示例,唯一的附加代码是 size-retrieval 如下:

list.appendChild(img);
var imgheight = img.height;
var imgwidth = img.width;
alert("width: " + imgwidth + ", height: " + imgheight);

【问题讨论】:

  • 这个问题你解决了吗?
  • 不,还没有,我尝试使用imgwidth = $("#list").children("img").width();,但返回相同。

标签: jquery css drag-and-drop html5-canvas


【解决方案1】:

我认为问题在于图像未加载。当您刷新/重新加载页面时,图像在浏览器缓存中,因此,当代码执行以读取其宽度 x 高度时,它已经知道图像并为您提供正确的答案。

请查看FIDDLE HERE 以获得解决方案。每当删除带有图像不同细节的图像时,此代码都会发出警报。

请注意以下代码:

 var dummyimage = new Image();

然后

                dummyimage.src = e.target.result;
                dummyimage.onload = function() {
                    // to add loaded image to document
                    list.appendChild(dummyimage);
                    // various properties of image
                    alert('width:' + this.width + ' x height:' + this.height + ' --- ' + file.type + '  ' + file.name  + '  ' + file.size);
                };
                dummyimage.onerror= function() {
                    alert('Image could not be loaded');
                };

该代码还会让您知道加载图像时是否存在问题。例如。如果一个 .doc 文件被删除或什么的。

如果您有任何问题,请告诉我。

【讨论】:

  • 谢谢 - 这似乎工作!至少它获得了图像大小,但似乎下面的代码没有被执行。似乎addEventHandler(reader, 'loadend', function(e, file) 中的所有内容都已处理,直到您在此处使用函数,但之后没有任何内容。
  • 您能详细说明一下吗?你能提供一个示例代码吗? 顺便说一句, 如果上述答案已经解决了您的实际问题,那么您应该接受它。这样其他寻求答案的人就可以将其视为已接受的答案并从中获得指导,并增加已回答问题的百分比。
  • 抱歉回复晚了。我通过剥离dummyimage.onload-函数解决了这个问题,并在设置dummyimage.src 后获取图像高度/宽度。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多