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



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

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

所以我的问题是:

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

谢谢。

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

然后,修改后的图像看起来会有点平坦,因为当您将像素更改为一个值(新色调)时,亮度不会发生变化。为了使它更逼真,您需要使每个像素具有与以前相同的亮度。您可以通过从 RGB 来回转换到 HCL 等颜色空间来做到这一点。苹果有一个很棒的颜色文档(在Mac部分)解释了颜色空间(谷歌'site:developer.apple.com"Color Spaces"')

为了实现您的目标,您必须处理以下技术:

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

如果这一切看起来很困难,那么您必须为您想要的每种颜色提供不同的图像。

最新更新