【发布时间】:2014-05-15 15:34:21
【问题描述】:
我有一个 phonegap 应用程序,它有多个输入字段,包括文本框/文本区域/签名/cad 草图/相机图像。此数据通过 ajax post 上传到服务器。
问题:
上传数据时,文件过大,并且由于图像的原因需要花费大量时间来上传。当没有添加照片时,大小约为 200kb - 400kb,但图像文件已达到 60Mb,并且对于使用互联网连接不佳的 Android 设备(信号不佳的区域)而言,这是无法使用的。
我尝试过的:
我在相机选项中使用了图像压缩,如下面的代码摘录所示,但是我面临的挑战是使用具有不同相机规格的不同设备,因此如果设备的相机质量较差,而设备具有无论如何都会进行高质量的相机图像压缩,因此图像质量会很差。
var cameraOptions = {
destinationType: Camera.DestinationType.DATA_URL,
quality: 40,
encodingType: 0,
};
对 phonegap 相机 API 和选项的参考:
http://docs.phonegap.com/en/2.0.0/cordova_camera_camera.md.html#Camera
通过阅读下面的帖子,我推断 jpeg 是最轻的格式,因此使用 endingType 0
PNG vs. GIF vs. JPEG vs. SVG - When best to use?
我们想要实现的目标:
将图像大小限制为每张图像最大 500kb,如果大于则压缩它。
【问题讨论】:
-
你到底在做什么来获取这么大的 JPG 图像?或者您是否正在尝试从单个表单上传一组图像(即使那样,我希望它至少需要 20 张图像才能达到 60mb 左右,这会推动它的发展)。
-
更正其单一动态构建的图像字段形式,用于捕获大约 15 - 25 张图像的照片
-
您需要原始尺寸的图片吗?为什么不使用 targetWidth/targetHeight 限制捕获图像的宽度/高度?它可能无法保证 500kb 的图像,但它肯定会有所帮助。
-
不需要原始尺寸的图像。我正在考虑尝试这样做并将宽度/高度设置为照片拍摄时的 cameraOption,但我不太确定应该使用什么尺寸来保留像样的图像。另外问题是这仅适用于“新”图像,以前下载的图像仍将保留旧尺寸
-
IIRC,Facebook 曾经将照片的长边限制在 1000 像素左右。我认为现在改为 2000 以更好地支持视网膜显示器,但如果您不需要全屏图像,您可能会侥幸获得 500-1000 像素。
标签: javascript android image cordova