【问题标题】:Compress image after capturing from camera and storing it at given path从相机捕获图像并将其存储在给定路径后压缩图像
【发布时间】:2018-02-22 12:55:13
【问题描述】:

我正在开发一个 android 应用程序,它需要从相机拍摄照片并压缩它,然后将其存储到给定的路径。我是 android 的初学者,所以我会感谢任何类型的帮助。我可以拍照并将其存储在 sdcard 上,但找不到压缩它的方法。我想将图像上传到服务器所以想将图像压缩到 50kb。我尝试了很多解决方案在互联网上,但没有人能做到。

【问题讨论】:

  • 加倍努力。
  • .I tried many solutions 那么你必须添加你尝试过的,否则你会得到你已经尝试过的解决方案的答案
  • @VladyslavMatviienko 我尝试了 Bitmap.createScaledBitmap() 以及不同示例中的 BitmapFactory inSampleSize
  • 什么在那里不起作用? createScaledBitmap 是正确的做法
  • 必须在那里传递一个位图,我在 onActivityResult 中得到的是图像的 Uri 。如何转换?

标签: android image camera compression


【解决方案1】:

可以参考this链接实现图片压缩。 我已经在我的项目中实现了这段代码,并且能够通过保持质量来压缩图像。

  FileOutputStream out = null;
    String filename = getFilename();
    try {
        out = new FileOutputStream(filename);
        scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

您可以根据需要更改数字 80。 此数字表示压缩图像的质量。 质量必须在 0-100 范围内。 0 表示压缩为小尺寸,100 表示压缩为最大质量。

谢谢

【讨论】:

    【解决方案2】:

    您可以使用位图压缩 0 = 最大压缩和 100 = 最小压缩。希望对你有帮助

    public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.WEBP, 0, bytes);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);
    }
    

    【讨论】:

    • 如何将图像 Uri 作为位图传递?
    • 从该 URI 中提取位图
    • 位图位图 = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2016-06-14
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多