0

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

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

所以我的问题是:

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

谢谢你。

4

1 回答 1

0

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

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

为了实现您的目标,您将不得不处理这些技术:

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

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

于 2012-06-26T14:02:46.100 回答