0

我有一个愚蠢的问题。我想加载一个 JPEG 文件并进行一些图像处理。在处理中,图像文件必须是像素=逐像素(无符号字符*),或格式为.bmp。我想知道我该怎么做?

处理完后,我想把这个文件保存为.bmp或者.jpg,怎么办?非常感谢,并为我糟糕的英语感到抱歉。

4

1 回答 1

0

评论中的链接很有用,但不完全是我认为你想要做的。您将不得不阅读一些关于 Quartz 的知识,这是 Apple 用于绘图和图像处理的技术。Apple 在这方面有很好的文档,但这不是简单的一小时工作——计划至少一天可能更多。

假设您从 UIImage 开始(我猜,这并不重要):

  • 获取该图像的 CGImageRef(可能是 [UIImage CGImage])

  • 创建一个足够大的 CGBitMapContext 来渲染该图像(您可以向 CGImage 询问其宽度和高度等)。

  • 如果你想最终创建一个带有 alpha 的 PNG,你需要为 alpha 创建一个足够大的位图上下文,即使 JPEG 图像没有它。如果您想要另一个 JPEG,您的工作会容易一些。

  • 将图像渲染到位图上下文中(有一个 CGContextDraw... 例程)

现在您的图像包含在您可以读取和修改的位图中。除非您指定了 alpha,否则布局可能是 rgb,在这种情况下,您必须确定 alpha 字节的位置。

一旦你修改了位图,你可以从那个位图创建一个新的 CGImage,如果你愿意,你可以得到一个 UIImage。

PS:如果你搜索,你会发现很多示例代码和发布,所以你不会完全靠自己。

于 2012-08-17T00:15:19.477 回答