我正在研究一个Webworks应用程序,我需要调整图像大小以便上传到服务器。我使用的是JQuery Mobile,应用程序需要在OS6上运行。用户可以使用相机或从设备上选择图像。相关代码如下:用HTML5画布调整图像大小 - 扭曲
function handleOpenedFile(fullPath, blobData) {
var image = new Image();
image.src = fullPath; //path to image
image.onload = function() {
var resized = resizeMe(image); // send it to canvas
//Do stuff with the DataURL returned from resizeMe()
};
}
function resizeMe(img) {
var canvas = document.createElement('canvas');
var width = Math.round(img.width/2);
var height = Math.round(img.height/2);
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
return canvas.toDataURL("image/jpeg", 0.8);
}
然后我使用DataURL中的Base64上传到服务器。图像缩小但出现乱码。图像的一部分被转移,颜色变得很奇怪。如果您在画布上绘制图像而不进行任何缩放,则图像出现乱码并不是缩放本身。
我已经搜索过SO和BB开发论坛广泛没有运气。
有没有人有任何想法如何解决这个问题或有一个替代的建议调整图像上传?
男人,哦,男人。这个问题对我来说是一个讨厌的问题。去年秋季推出了iOS 6,增加了从相机/相机胶卷进行拍摄的功能。我还需要用Canvas调整大小。执行大小调整/旋转时,画布大小调整造成严重问题。看看这篇文章:http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios。最后,我写了一个小型库来解决问题,与此类似(但在此之前):https://github.com/stomita/ios-imagefile-megapixel。 –
对不起,笔记本电脑在我提交我的更多相关评论之前死亡。在iOS上,由于大图像上的二次采样,问题才发生。快速谷歌搜索显示,在黑莓手机上,至少有一个人有大图像的一些问题http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/Problem-JavaScript-amp-Canvas-cannot-process - 大图像-GT/TD-p/2128847。您可以将小图像(比如100 x 100像素)下载到您的设备上,选择该图像,然后查看是否有相同的问题。 –
谢谢你的建议,我看了一下BB论坛的主题,试了一下没有成功的百万像素库。我用我找到的解决方案回答了我自己的问题。 – Iyashu5040