当前位置: 首页 > 知识库问答 >
问题:

如何在Android中压缩位图后保存Exif数据

南宫天逸
2023-03-14

在使用相机意图拍摄照片后,我压缩位图以降低文件大小。问题是压缩后,它会丢失所有EXIF数据。检索原始EXIF数据没有问题,但是,如何将压缩后的EXIF数据添加到字节数组中?

(我的猜测是获取字节数组并创建一个位图,然后添加旧的EXIF数据,然后再次添加到字节数组,但这是一个移动应用程序,我正在拍摄大量图像,所以我不想浪费内存)

以下是我压缩位图并保存到字节数组输出流的代码:

myBitmapImage.compress(Bitmap.CompressFormat.JPEG, 75, outputstream);//Losing EXIF data here
byte[] ba = outputstream.toByteArray(); // How to add EXIF data here ?

共有1个答案

澹台承
2023-03-14

我找到了一种方法,我们可以在位图压缩后保存Exif数据,因此如果有人看到这篇文章,就将其发布在这里。

您可以使用Apache的tiff导入和ExifTagConstants将EXIF数据添加回字节数组映像:
org.Apache.sanselan.formats.tiff.constants。TagInfo org.apache.sanselan.formats.tiff.constants.ExifTagConstants

 类似资料:
  • 我在Android上工作。我需要保存一个没有质量损失的位图。 我使用位图的方法进行了尝试,将质量设置为100。这对我不起作用,位图失去了太多的质量。我已经测试了JPEG和PNG格式。 我已经测试过将位图复制到,然后提取,并使用保存它。在这种情况下,我无法显示用这种方式保存的图像,我只看到一个空白页。 我的问题是,有没有办法在不压缩的情况下将位图保存在SD卡中? 编辑:这里我的代码的一部分 我检测到

  • 从远程url保存位图图像的典型方法(基于研究)是: 我无法保存位图,除非它被压缩(位图总是未压缩)。远程图像大小为32KB,压缩后为110KB。我知道我必须降低压缩参数以获得更小的尺寸,但远程图像经过优化,效率更高。 有没有一种方法可以在不压缩远程图像的情况下将其保存到移动存储上? 我的问题的答案===== 首先,我为误导内容道歉;我只想保存可以是png | jpeg | gif |等格式的图像。

  • 我想上传图像到服务器。将我的图像转换为位图,但仍然出错。位图太大,无法上传到纹理中 如果我得到图片使用画廊意味着我得到错误的位图太大,不能上传到纹理 如果我得到图片使用相机意味着得到错误的 造成:java.lang.安全例外:权限拒绝:阅读<-plhd--1/>MediaProvider uri内容://media/外部/图像/媒体从pid=18253,uid=10257需要android.per

  • Android API提供了保存位图对象的方法。我创建了一个示例应用程序,它将jpeg图像(一些嘈杂的相机照片)加载到位图中,然后将其压缩回同一个文件。然后,再做5次。 显然,我的位图积累了压缩伪影。让我惊讶的是,这些伪影的数量以一种奇怪的方式取决于压缩的质量。当我将质量设置为100(我认为这是最好的质量)时,工件清晰可见。当我将质量降低到90时,工件的可视性明显降低。质量设置为80会给我最好的效

  • 我正在从相机中保存一个处于横向模式的图像。所以它被保存在横向模式下,然后我在它上面应用一个覆盖层,它也是在横向模式下。我想旋转那个图像,然后保存。例如,如果我有这个 我想顺时针旋转90度一次,这样做,并将其保存到SD卡: 如何做到这一点?

  • 问题内容: 我正在通过wifi或移动网络通过网络发送图像,以将其存储在服务器中并再次检索。我已经这样做了,但是由于相机拍摄的图像太大,这使我的应用程序变慢,只是要指出我正在打开图库并从那里拍摄照片,而不是直接从应用程序拍摄照片。我注意到,从相机和图库中获取的来自whatsapp的图像已被压缩到大约50%。100kb。 目前,我的代码获取一个文件,并将其转换为字节,然后发送。这是获取文件并将其转换为