android - 如何在不改变文件大小的情况下旋转位图?

标签 android bitmap compression

我试着这样做:

Bitmap bitmapOrg = BitmapFactory.decodeFile("/sdcard/"+ photoName + ".jpg");

        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();

        Matrix matrix = new Matrix();

        matrix.postRotate(90);

        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width,
                height, matrix, true);

        FileOutputStream os;
        try {
            os = new FileOutputStream(String.format(
                "/sdcard/" + photoName + "-rotate.jpg",
                    System.currentTimeMillis()));

        resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);

旋转文件大小 > 原始文件大小,因为旋转文件分辨率 = 96 dpi,但原始文件 = 72 dpi。为什么会发生这种情况以及如何解决?

最佳答案

您可以在 FileOutputStream os; 之前添加以下行:

resizedBitmap.setDensity(bitmapOrig.getDensity());

关于android - 如何在不改变文件大小的情况下旋转位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592934/

相关文章:

Android GIF 支持 -- React Native 0.50

compression - 为什么 Zlib 压缩对字符串数据和二进制数据更好?

ffmpeg - 静止图像到视频以供存储 - 但返回静止图像以供查看

java - 从服务发送数据到远程套接字时出现问题

android - 无法解析 : com. afollestad :bridge:5. 1.2

string - 如何在 OpenGL 中的 3d 场景上打印字符串

android - 如何将图像(位图)调整为给定大小?

json - JSON 编码数据包的压缩算法?

android - 如何在初始化 recyclerview 适配器时保持 UI 解锁?

bitmap - WiX 无法正确渲染图像