我使用load-image.js,如下所示,当您使用一个base64时,它具有正确的方向。它工作,它将图像转换为base64,但是如果我上传的图像是70k,那么当它是base64图像时,它将是701k?
如果我只使用fileReader,那么它是70k作为一个图像和70k作为base64!
那么,如何使用load-image.js使其更小-打火机呢?
现在我就是这样使用load-image.js的
var file='';
file = document.getElementById('file-input').files[0],
options = {
canvas: true,
maxWidth: 600,
};
if (!file) {
return;
}
// Use the "JavaScript Load Image" functionality to parse the file data
loadImage.parseMetaData(file, function(data) {
// Get the correct orientation setting from the EXIF Data
if (data.exif) {
options.orientation = data.exif.get('Orientation');
}
// Load the image from disk and inject it into the DOM with the correct orientation
loadImage(
file,
function(canvas) {
var imgDataURL = canvas.toDataURL();所以,我使用的是imgDataURL中的imgDataURL,它的文件大小要大得多!我使用load-image.all.min.js文件。
我想要的只是将一个图像转换为base64,并且它从一开始就有正确的方向,当我在iPhone上这样做的时候。
任何投入都非常感谢,谢谢。
编辑:我刚刚意识到上传的图像是一个.jpg文件,当仅用filereader上传时,它仍然是base64中的一个.jpg文件,但是load映像正在将其更改为.png映像。所以我想这就是问题所在。那么,我怎样才能把它变成带有负载映像的.jpg呢?
发布于 2017-01-11 18:25:18
一旦基础64‘ed,任何东西变得大约33%大。
所以,不能是,一个70K的图像是70K的base64流,除非在传输过程中丢失了什么,或者是在接收和基本64解码之后检查图像。每3个字节变成4个base64字符,所以70K必须至少变成93K。
现在-什么能使一幅图像大10倍?has具有缩放功能。您确定您发送的图像大小(以像素为单位)与出发时的大小相同吗?也可能与画布分辨率有关:
aspectRatio:将图像按给定的纵横比(例如16/9)进行种植。设置aspectRatio还启用了裁剪选项。 pixelRatio:定义画布像素与屏幕上物理图像像素的比率。应设置为window.devicePixelRatio,除非缩放后的图像未在屏幕上呈现。默认为1,需要画布: true。
更新:要以给定的格式和质量发送图像,请显式地指定它们:
var imgDataURL = canvas.toDataURL('image/jpeg', 1.0);默认情况可能与浏览器有关。我正在火狐中成功上传JPEG文件。除非你在某个地方设置了覆盖装置?
https://stackoverflow.com/questions/41597945
复制相似问题