【问题标题】:Compress image before save into zip file在保存到 zip 文件之前压缩图像
【发布时间】:2015-12-30 18:46:03
【问题描述】:

我有如下代码来创建包含图片的 zip 文件

public void zip(String[] files, String zipFile) {

    final String[] _files = files;
    final String _zipFile = zipFile;

    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            try {

                BufferedInputStream origin = null;
                FileOutputStream dest = new FileOutputStream(_zipFile);

                ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));

                byte data[] = new byte[BUFFER];

                for (int i = 0; i < _files.length; i++) {
                    Log.d("add:", _files[i]);
                    Log.v("Compress", "Adding: " + _files[i]);
                    FileInputStream fi = new FileInputStream(_files[i]);
                    origin = new BufferedInputStream(fi, BUFFER);
                    ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1));
                    out.putNextEntry(entry);
                    int count;
                    while ((count = origin.read(data, 0, BUFFER)) != -1) {
                        out.write(data, 0, count);
                    }
                    origin.close();
                }

                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    thread.start();
}

我调用方法 zip(stockArr,"/storage/sdcard0/MyAnnouncementImages.zip"),图像没有被压缩,那么如果每张图片重 3Mb,那么 zip 文件会很重,那么我需要压缩将每个图像放入 zip 文件之前,有帮助吗?

【问题讨论】:

  • 您要压缩什么样的图像?许多类型的图像文件已经被压缩。
  • 所有类型的图像,我需要一些像这样的 compress(Bitmap.CompressFormat.JPEG, 10, outputStream) 来减小图像大小
  • 如果您的文件是 JPEG 或 PNG 图像,它们已经被压缩,如果不以较低的质量重做整个图像,就无法缩小它们。如果您使用gzip -9 image.bmpgzip -9 image.jpg 之类的命令手动压缩文件,您会获得多少压缩?

标签: android image file zip compression


【解决方案1】:

您尝试使用位图吗?

Bitmap bitmap = Bitmap.createScaledBitmap(capturedImage, width, height, true);

指定位图的宽度和高度,所以...高度和宽度可以根据设备的屏幕dpi设置。

【讨论】:

  • 如何添加到我展示的代码中?我不知道如何聚合,因为 stockarr 是一个字符串 [] 那么首先我要做的是转换为位图,然后再次转换为每个位置的字符串...
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多