i am using titanium 2.0.1, i need to compress the size of a image taken by camera and then upload it. Right now the image size is 800kb+, which takes a lot of time to upload. i need to compress the size. can anyone tell me the way how to do that.
3 回答
Titanium 似乎默认以“高”质量导出图像,无法将压缩设置调整为较低质量(没有第三方模块)。如果您将 Titanium 生成的 JPG 与通过 Photoshop 的 Save for Web JPEG 'High' 功能导出的 JPG 进行比较,您会注意到 Ti 图像的文件大小要大得多。
您可以尝试以下模块之一:
iOS 和 Android:marketplace.appcelerator.com/apps/1184?540167410
仅限 iOS: https ://github.com/gudmundurh/titanium-imaging
仅限 Android: https ://github.com/novelys/titanium-jpegencoder
图像不会压缩太多,因为许多图像格式已经压缩了图像,例如 jpeg。我在 3118 KB 的 jpg 图像上尝试了 zip 和 7zip,然后 zip 将其压缩到 3114 KB,而 7zip 将其大小增加到 3121 KB。
如果您仍想压缩图像大小,可以尝试使用以下 javascript 代码进行 zip 压缩:https ://github.com/TermiT/ZipFile 。它可能会使您的上传时间更慢,因为您将不得不等待应用程序压缩图像并等待应用程序上传它。
如果您不介意上传较小尺寸的图像,这也会使文件大小更小,您可以使用 Titanium 的imageAsResized方法。在 Titanium 2.0 之前,该方法在 Android 中不起作用。我还没有在 Titanium 2.0 中测试过它现在是否可以在 Android 中运行。
您可能想要查看的其他内容是网络连接速度(无线、3G、4G)。也许您的测试连接速度很慢。
赞成的答案似乎已经过时了。
https://github.com/appcelerator-modules/ti.imagefactory是一个在 iOS 和 Android 上运行的最新模块,允许使用 Appcelerator/Axway/Titanium 进行图像处理。
来自https://github.com/appcelerator-modules/ti.imagefactory/blob/stable/ios/example/app.js的一些示例
btnSave.addEventListener('click', function (e) {
newBlob = ImageFactory.compress(blob, 0.25);
var filename = Titanium.Filesystem.applicationDataDirectory + "/newflower.jpg";
f = Titanium.Filesystem.getFile(filename);
f.write(newBlob);
var alert = Ti.UI.createAlertDialog({
title:'Image Factory',
message:'Compressed image saved to newflower.jpg with compression quality of 25%'
});
alert.show();
});