我想使图像尽可能小(就数据大小而言,不改变高度或宽度),我可以以牺牲颜色为代价。所以我想有4位配色方案。如何将图像转换为这种配色方案?如何创建它?我首先尝试使用以下代码转换为灰度:
func convert(image: UIImage) -> UIImage? {
let imageSize = image.size
let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceGray()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue)
let context = CGContext(data: nil, width: Int(imageSize.width), height: Int(imageSize.height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)!
context.draw(image.cgImage!, in: CGRect(origin: CGPoint.zero, size: imageSize))
//image.draw(in: )
let imgRef = context.makeImage()
return UIImage(cgImage: imgRef!)
}
,它正在工作。现在,我想修改它以使用不同的色彩空间。我发现我正在寻找的可能是索引配色方案,对吗?但是我找不到任何有关如何执行此操作的有用教程。我是这样开始的:
let table: [UInt8] = [0,0,0, 255,0,0, 0,0,255, 0,255,0,
255,255,0, 255,0,255, 0,255,255, 255,255,255]
let colorSpace = CGColorSpace(indexedBaseSpace: CGColorSpaceCreateDeviceRGB(),
last: table.count - 1, colorTable: table)!
但是我不确定我是否可以开始并且应该继续。然后应在CGContext init方法中使用哪些值,依此类推。有人可以帮我吗?谢谢