【问题标题】:Question regarding jpeg and png file structure and header information关于 jpeg 和 png 文件结构和头信息的问题
【发布时间】:2019-08-27 21:51:36
【问题描述】:

我需要能够修改 jpeg 或 png 文件的内容,并且能够成功地将图像分解为字节,反之亦然。唯一的问题是我不知道 jpeg 文件头或 png 文件头由多少字节组成。对于像我这样的初学者来说,大多数网站上的信息都非常模糊和/或信息量太大。

如果有人能提供一个简单的答案,告诉我需要跳过多少字节才能通过标题以及如何识别图像是 jpeg 图像还是 png 图像以及任何其他重要信息,我真的很感激我可能没有提到。

我添加了下面的代码,我使用它从图像中提取字节并将图像转换为字节。

注意:此代码适用于安卓操作系统

用于将图像转换为字节的代码:

public  byte[] imgtobytes(File f)
{
 FileInputStream fis=null;

 try
 {
  fis = new FileInputStream(f);
 }

 catch(Exception e)  {}

  Bitmap bm = BitmapFactory.decodeStream(fis);
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  bm.compress(Bitmap.CompressFormat.JPEG, 100 , baos);
  byte[] b = baos.toByteArray();
  return b;
}

用于将字节转换为图像并将其显示在图像视图上的代码:

public void bytestoimg(byte[] bytearray, ImageView imgv)
{
    Bitmap bmp = BitmapFactory.decodeByteArray(bytearray, 0, bytearray.length);

    imgv.setImageBitmap(Bitmap.createScaledBitmap(bmp, imgv.getWidth(),
        imgv.getHeight(), false));
}

【问题讨论】:

  • 只跳过固定数量的字节是行不通的。相反,找到一个读取图像格式的库。
  • 我确实找到了一个读取图像格式但我仍然需要编辑内容并且仅仅知道图像格式是不够的。
  • 如果我问新手问题真的很抱歉,但我不是很有经验

标签: java android


【解决方案1】:

前段时间我在 python 中做过一些类似的加密工作。我相信您正在寻找的内容可以在“示例”部分下找到in this wikipedia article

您也可以查看this answer

【讨论】:

  • 我之前检查过这个链接,它很有用,但是在 jpeg 部分,在 jfif 和 exif 部分之后,它说有更多的元数据。这是否意味着我需要跳过更多字节才能获得实际的图像内容?
  • 很抱歉没有活动,如果您还没有解决这个问题,深入研究 JPEG 维基百科文章可能会很有用。有一个“语法和结构”部分可能会提供额外的见解。 en.wikipedia.org/wiki/JPEG#Syntax_and_structure
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多