我想将 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/