在ios上使用文本自定义图像的最佳方法

时间:2012-06-26 11:19:17

标签: ios custom-component quartz-core

我有一个项目来定制衣服,比如一件T恤,它有以下特点:

  • 改变颜色。
  • 添加几行文字(< = 4)并从列表中更改字体。
  • 在T恤上添加图片或照片。
  • 将T恤旋转到自定义背面。
  • 旋转图像并放大/缩小。
  • 将结果保存为本地项目并将其发送到Web服务(我想使用NSDictionary / json)。
  • 另存为图片。

所以我的问题是:

我应该使用多个图像来模拟颜色变化。或者我应该使用QuartzCore(我不是QuartzCore的专家,但如果我必须使用它,我会学习)。或者有更好的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

这样做的简单方法是将T恤图像渲染为CGContext,然后遍历行和列,并将显示“强”原色的像素更改为所需的色调。你会拍一张穿着鲜红色(或其他原色)T恤的人的照片,然后在你的代码中只更改红色具有高亮度和饱和度的像素(即“r”值超过某个阈值并且b和g组分很低)。

然后,修改后的图像看起来有点平坦,因为当您将像素更改为一个值(新色调)时,亮度不会有变化。为了使其更加真实,您可能希望使每个像素具有与之前相同的亮度。您可以通过从RGB来回转换为像HCL这样的颜色空间来实现此目的。 Apple有一个很好的颜色文档(在Mac部分),它解释了颜色空间(google'site:developer.apple.com“Color Spaces”')

要实现目标,您必须解决这些技术:

  • 使用Quartz
  • 创建一个CGContext并将图像渲染到其中
  • 弄清楚如何读取每个像素(像素可以有alpha和不同的顺序)
  • 找出识别正确像素的好方法(通过制作这些黑色或白色进行测试)
  • 对于您要更改的每个像素,将RGB转换为HCL以获得其亮度
  • 使用不同颜色和色调的像素替换像素但具有相同的Luminence
  • 使用CGContext制作新图像

如果所有这些看起来都很困难,那么你必须为你想要的每种颜色都有不同的图像。