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

PNG文件格式和图像字节?

柳韬
2023-03-14

我目前正在尝试编写一个程序,将文本编码到一个png文件中,只改变我想在图片中编码的每个字母的最低有效位,例如我有一个'a',它是65,我使用8个不同的字节来编码字母a。所以01010100<-1010110<-11011010<-10101010<-1010101010<-1010101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-10101010<-

如果我应该用一种不同的方式来处理这个问题,建议将是很棒的:)。这只是一个有趣的小项目,我想做。但无论如何,回到我的问题。

当我读一个只有4像素大的图像时,我会读到680字节,这太疯狂了,或者至少我认为是这样,也许我错了?4个像素的ARGB为8位,每一个应该是16字节和几个字节,我肯定告诉操作系统它是一个png和如何处理它。所以我想大概是30个字节。也许更少。我看错了吗?当png图像被压缩时,如果它是一张小图片,它们会变大吗?而且,当我把它保存回硬盘时,我总是得到一个更大的文件。原来的图片是8,554kb,当我把它保存回来时,它变成了16kb。下面是获取图像字节和保存图像的代码。也许我做错了什么,或者我只是没有正确地理解它。

这些是我获得图像的方法(我尝试了2种不同的方法

//BufferedImage img=ImageIO.read(新文件(“image.png”));
BufferedImage img=robot.createscreencapture(新矩形(1,2,2,2));

我又是如何拯救两种不同的方式。

尝试{
InputStream in=new ByteArrayInputStream(imgBytes);
BufferedImage bImageFromConvert=ImageIo.Read(in);
ImageIo.Write(bImageFromConvert,“png”,new File(“image.png”));

//FileOutputStream fos=new FileOutputStream(“image.png”);
//fos.Write((b);
//fos.Close(

我是如何从图像中获得字节的,我又尝试了两种不同的方法,第二种方法被注释掉了,实际上给了我想要的16个字节,但当我保存它时,Windows无法打开它,因为它不知道它是什么?不确定,只是说文件不支持。

Byte[]imageBytes=null;
try{
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.Write(image,“jpg”,baos);
baos.Flush();
imageBytes=baos.TobyteArray();
baos.Close();
}catch(IOException e){System.Out.Println(e.GetMessage());}

谢谢!

共有2个答案

欧阳正谊
2023-03-14

我的条形码字体也有同样的问题。我只想把5位数据编码成我能得到的最小的PNG。我不想做的是编写一个基于libpng的自定义程序。我尝试了相当多的编辑器和最小的文件大小,我可以得到大约170字节。

最后我找到了GIMP2.0。有一个功能可以用来导出不包含所有元数据的PNG文件。我也改成了8位灰度。我想我可以通过切换到2位灰度来剃掉几个字节,但是Gimp不会为我做这件事。最后,我很高兴每个字符有75个字节。

西门建安
2023-03-14

一个png包含大量的图像元数据和原始图像数据。这就是给你疯狂的680字节。

 类似资料:
  • 问题内容: 如何使用PHP将单个jpg图像转换为3种不同的图像格式gif,png和bmp? 请帮助 问题答案: 首先,使用imagecreatefromjpeg()从文件中创建图像对象。然后,您将该对象转储为不同的格式(例如,使用imagegif()):

  • The Python Imaging Library supports a wide variety of raster file formats. Nearly 30 different file formats can be identified and read by the library. Write support is less extensive, but most common

  • 字典文件的格式 有两种类型的AVP。 标准RADIUS属性称为属性值对(AVP),而来自供应商的属性称为供应商特定属性(VSA)。 虽然有两种类型的AVP,但我们通常不区分这两种类型,只需将它们称为AVP即可。 VSA使用RADIUS属性类型26(Vendor-Specific)。 此AVP的值用于依次包装特定于供应商的属性。 查看更新的dictionary.mikrotik文件的内容以了解dic

  • 我有一个byte[],它是通过从某个表中提取数据返回的。我想把这个字节数组转换成png图像。注意:我没有像其他地方类似的例子中那样从图像中获得字节数组。

  • 我有以下数据: 我运行一个for循环来可视化数据。它为每个州和经济体制作了两个图表。 仅创建最后(第二)个图表的图片。如何将两个图表保存为png或其他格式的图像。即使我删除之前的缩进,它仍然不起作用。

  • 本文向大家介绍JavaScript 下载svg图片为png格式,包括了JavaScript 下载svg图片为png格式的使用技巧和注意事项,需要的朋友参考一下 1.遇到需要将svg下载的需求,网上找了一些代码,地址是这个https://github.com/exupero/saveSvgAsPng,但是不太好用,莫名的把网页所有的svg都下载了,于是在源码的基础上做了一些小的修改;代码如下所示 这