Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Phonegap减少图像大小_Javascript_Android_Image_Cordova - Fatal编程技术网

Javascript Phonegap减少图像大小

Javascript Phonegap减少图像大小,javascript,android,image,cordova,Javascript,Android,Image,Cordova,我有一个phonegap应用程序,它有多个输入字段,包括文本框/文本区域/签名/cad草图/相机图像。这些数据通过ajax post上传到服务器 问题: 上传数据时,由于图像的原因,文件过大,上传时间过长。当没有添加照片时,文件大小约为200kb-400kb,但对于图像,文件大小已达到60Mb,就使用互联网连接不良(信号不好的区域)的android设备而言,这是无法使用的 我尝试过的: 我在相机选项中使用了图像压缩,如下面的代码摘录所示,然而,我所面临的挑战是,使用了具有不同相机规格的不同设备,

我有一个phonegap应用程序,它有多个输入字段,包括文本框/文本区域/签名/cad草图/相机图像。这些数据通过ajax post上传到服务器

问题:

上传数据时,由于图像的原因,文件过大,上传时间过长。当没有添加照片时,文件大小约为200kb-400kb,但对于图像,文件大小已达到60Mb,就使用互联网连接不良(信号不好的区域)的android设备而言,这是无法使用的

我尝试过的:

我在相机选项中使用了图像压缩,如下面的代码摘录所示,然而,我所面临的挑战是,使用了具有不同相机规格的不同设备,因此,如果该设备的相机质量较差,与具有高质量相机的设备相比,图像压缩将发生,因此图像质量将非常糟糕

 var cameraOptions = {
                    destinationType: Camera.DestinationType.DATA_URL,
                    quality: 40,
                    encodingType: 0,
                };
参考phonegap摄像头API和选项:

通过阅读下面的文章,我推断jpeg是最轻的格式,因此使用的endodingType为0

我们想要实现的目标:


将每张图像的最大大小限制为500kb,如果大于500kb,则将其压缩。

我尝试使用不同的相机选项,通过以下方法,我从iPhone 5获得了4.5MB的文件大小:

navigator.camera.getPicture(onSuccess, onFail, {
    destinationType : Camera.DestinationType.DATA_URL,
    sourceType : Camera.PictureSourceType.CAMERA,
    quality : 50,
    encodingType : Camera.EncodingType.JPEG
});
只有通过添加行

correctOrientation : true
文件大小减少到~500kB


我没有任何解释为什么它应该这样工作,但我建议如果quality属性似乎没有任何作用,您可以尝试一下。

您到底在做什么来获得如此大的JPG图像?或者你是在尝试从一个表单上传一组图像(即使这样,我也希望至少需要20张图像才能达到接近60mb的速度,这就相当大了)。更正它是一个动态构建的图像字段形式,用于捕获大约15-25幅图像的照片。是否需要原始大小的图像?为什么不使用targetWidth/targetLight限制捕获图像的宽度/高度?它可能不能保证500kb的图像,但肯定会有帮助。没有必要使用原始大小的图像。我想尝试一下,并将宽度/高度设置为拍照时的相机选项,但我不太确定应该使用什么尺寸来保留一张像样的图像。另外一个问题是,这只适用于“新”图像,以前下载的图像仍将保留旧的sizeIIRC,Facebook用于将照片限制在1000像素左右。我认为现在已经改为2000,以更好地支持视网膜显示,但如果你不需要全屏图像,你可能只需要500-1000px就可以了。事实上,使用相关定向技术可以减少700k+1.