gpt4 book ai didi

iOS : converting png image to 1 bit bmp images

转载 作者:行者123 更新时间:2023-11-29 04:06:29 25 4
gpt4 key购买 nike

我的要求是将 png 文件转换为 1 位单色位图文件。我有一个 UIImage 对象,我想将其表示为 1 位单色 bmp。

1)有什么简单的方法可以做到这一点吗?我准备从头开始执行此操作,但前提是没有任何现成的解决方案可用。我浏览了核心图形和核心图像框架,但找不到任何相关内容。或者有没有可用的开源项目可以实现这一点?

2)如果我必须手动执行此操作,我对保存像素的位表示有一些疑问。我发现bmp文件格式here

  1. 按照文件格式创建位图 header 。我不知道所有 bmp 版本(1 位、8 位等)是否具有相同的 header 格式。找不到任何相关信息。
  2. 迭代png图像的所有像素,得到的字节值红、绿、蓝 (RGB)。对这 3 个值进行一些计算,得到 1 位表示。例如类似(伪代码)

    for(each pixel){
    average = (pixel.RValue + pixel.GValue + pixel.BValue)/3;
    if(average > 0x7f) //127
    bit = 1;
    else
    bit = 0;
    //bit has monochrome representation for this pixel, but how to store it?
    }
  3. 将这些位附加到您已经创建的 bmp header 中。

我知道如何迭代 png 图像中的每个像素,因此我可以获得该像素的单色表示。我也认为我可以做标题部分,尽管我还没有做。但我不知道如何处理位。有什么帮助吗?

最佳答案

Is there any straightforward way to do this? I am ready to do this from scratch, but only if any readymade solution is not available.

我无法告诉你是否有现成的解决方案可以在 iOS 中编写 BMP,但我可以告诉你,BMP 是少数几种相对容易从头开始编写的格式之一。

Create a bitmap header, following the file format. I am not sure whether all bmp versions (1 bit, 8bit etc) has same header format. Couldn't find any information on that.

维基百科文章内容非常丰富。所有BMP类型的头格式基本相同,位深度存储在偏移量1Ch

Iterate through all pixels of the png image, get the byte value of Red, Green, Blue (RGB). Do some calculation on these 3 values, to get a 1 bit representation. For example ... Append these bits to bmp header which you already created.

听起来不错。不要忘记行可能需要一些 padding

But I have no idea how to deal with bits

只需打包 eight bits in one byte 组即可.

关于iOS : converting png image to 1 bit bmp images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com