java - 如何将 TIFF 图像文件转换为 Android 位图

标签 java android android-activity bitmap android-bitmap

我想将 SD 卡上的图像转换为位图。我正在使用下面的代码

String filepath = "/storage/emulated/0/Download/sample2.tif";
    Bitmap bm = BitmapFactory.decodeFile(filepath);

此代码适用于扩展名为 .jpg 或 .png 的文件,但不适用于 .tif 或 .tiff。对于 TIFF 文件,bm 变为 null,没有异常(exception),所有文件路径均有效。

Android BitmapFactory 在解码 TIFF 图像方面是否有任何限制?

还尝试了decodeByteArray和decodeStream,看起来对我来说有限制。 我能够将 TIFF 图像文件读取为 byte [],但将 byte[] 或文件输入流转换为位图则返回 null

请告诉我将 TIFF 图像文件转换为位图的任何其他方法。

最佳答案

正如 VERT9x 所说,Android 不支持 TIFF 文件。但您可以使用 native Android 库来来回转换它们,例如 https://github.com/puelocesar/android-lib-magick 。这是将 jpg 转换为 tif 的示例代码。希望这会有所帮助。

MagickImage Image = new MagickImage(new ImageInfo(IMAGE_PATH));
// Image = Image.scaleImage(800, 800);
Image.setImageFormat("tif");
Image.setFileName(str);
ImageInfo localImageInfo = new ImageInfo(str);
localImageInfo.setMagick("tif");
Image.writeImage(localImageInfo);
// store as tif
byte[] blob = Image.imageToBlob(localImageInfo);
FileOutputStream localFileOutputStream = new FileOutputStream(str);
localFileOutputStream.write(blob);
localFileOutputStream.close();

关于java - 如何将 TIFF 图像文件转换为 Android 位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29124616/

相关文章:

java - onSaveInstanceState 给我 parcelable 错误...有时

android - EditText 在恢复时不显示任何内容。 (被安卓系统破坏的 Activity )

java - 如何以编程方式生成图标并使用它代替快捷方式图标?

java - 如何判断一个jobject是LocalRef还是GlobalRef?

Android:同时进行两项 Activity

java - 如何获取文件 io 的兼容时间戳?

android - 为什么样本使用?引用样式 listSeparatorTextViewStyle 时?

java - 如何从 Android 的 ListView 中删除项目?有像iOS那样的内置控件吗?

java - 发布前如何知道应用程序的URL?

JavaFX 3D - 如何为 Group with 3D object 和 SubScene with UI Controls 设置不同的相机?