gpt4 book ai didi

ios - 将索引颜色 .png 转换为 RGB 或灰度

转载 作者:行者123 更新时间:2023-11-29 00:30:13 25 4
gpt4 key购买 nike

我正在编写这个 Today Widget,它需要显示图像。我注意到,每次加载 Widget 时,都会重新绘制图像。这大约需要半秒钟。经过一番调查,我发现罪魁祸首是图像文件位于索引色彩空间中。所以:我的问题是:如何将此文件转换为 iPhone 可以更有效地显示的内容?例如,一个 RGB 文件。然后我将它保存到一个新文件,并将该新文件加载到我的 UIImageView 中。

我尝试了一下 CGImage,因为我相信这是解决方案的方向,但我最终得到了一个白色的 UIImageView。

这是我的代码:

UIImage * theCartoon = [UIImage imageWithData:imageData];
CGImageRef si = [theCartoon CGImage];
CGDataProviderRef src = CGImageGetDataProvider(si);
CGImageRef imageRef = CGImageCreateWithPNGDataProvider(src, NULL, NO, kCGRenderingIntentDefault);
cartoon.image = [[UIImage alloc] initWithCGImage:imageRef];

对这种方法有什么建议吗?一些明显的错误编程?

最佳答案

试试这个

// The source image
CGImageRef image = theCartoon.CGImage;
CGSize size = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image));

// The result image in RGB color space
CGImageRef result = nil;

// Check color space
CGColorSpaceRef srcColorSpace = CGImageGetColorSpace(image);
if (CGColorSpaceGetModel(srcColorSpace) != kCGColorSpaceModelRGB) {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(nil, size.width, size.height, 8, 0, colorSpace, kCGImageAlphaNoneSkipLast);

CGRect rect = {CGPointZero, size};
CGContextDrawImage(context, rect, image);
result = CGBitmapContextCreateImage(context);

CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
}

关于ios - 将索引颜色 .png 转换为 RGB 或灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42092684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com