Android:上传JPG图像而不丢失EXIF

Android:上传JPG图像而不丢失EXIF,android,exif,Android,Exif,我将JPG图像作为字节[]上传,但在转换为字节[]之前,会将EXIF的位图条带上传。如何上传原始jpg而不将其转换为位图 File imagefile = new File(filepath + "DSC00021.jpg"); FileInputStream fis = new FileInputStream(imagefile); Bitmap bi = BitmapFactory.decodeStream(fis); // EXIF info lost ByteArrayOutputStr

我将JPG图像作为字节[]上传,但在转换为字节[]之前,会将EXIF的位图条带上传。如何上传原始jpg而不将其转换为位图

File imagefile = new File(filepath + "DSC00021.jpg");
FileInputStream fis = new FileInputStream(imagefile);
Bitmap bi = BitmapFactory.decodeStream(fis); // EXIF info lost
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPG, 100, baos);
byte[] data = baos.toByteArray();

p、 我不想使用任何第三方图书馆。ExiFinInterface只能写入文件,不能写入流/字节数组。

通过

Bitmap bi = BitmapFactory.decode(filepath + "DSC00021.jpg");
您也可以指定选项,请参阅API

或者,如果您想将元数据从一个文件交换到另一个文件,可能是最佳选择。这在处理图像时非常有用,例如重新调整大小


将引导您找到正确的方向。

通过将文件转换为位图

Bitmap bi = BitmapFactory.decode(filepath + "DSC00021.jpg");
您也可以指定选项,请参阅API

或者,如果您想将元数据从一个文件交换到另一个文件,可能是最佳选择。这在处理图像时非常有用,例如重新调整大小


将引导您走向正确的方向。

上述代码在大多数情况下不起作用。在这种情况下,如果你想解码大尺寸的图像,你会得到内存不足的错误。使用bitmpafactory选项进行解码。

上述代码在大多数情况下不起作用。在这种情况下,如果你想解码大尺寸的图像,你会得到内存不足的错误。使用bitmpafactory选项进行解码。

为什么不从FileInputStream到字节数组读取整个文件内容,而不是转换为位图对象?谷歌搜索会给你大量的结果,告诉你如何将文件内容放入字节数组。你为什么不把整个文件内容从FileInputStream读取到字节数组,而不是转换成位图对象呢?谷歌搜索会给你大量的结果,告诉你如何将文件内容放入字节数组。我提到过,我不想用第三方libs。我提到过,我不想用第三方libs。