缩放黑白图像
Posted
技术标签:
【中文标题】缩放黑白图像【英文标题】:Scaling black and white image 【发布时间】:2011-10-30 21:08:26 【问题描述】:我从网上获取一张图片并将其显示在 UIImage 中,但首先我将其缩小。问题是,如果图像是黑白的,结果会很糟糕,有很多白线穿过图片。
我尝试了很多变化,但我没有看到任何改进,总是同样的质量差。有什么建议吗?
我尝试过的一些事情(记住我在没有 UIImageView 的情况下工作):
http://iosdevelopertips.com/graphics/how-to-scale-an-image-using-an-objective-c-category.html
How to scale a UIImageView proportionally?
What's the easiest way to resize/optimize an image size with the iPhone SDK?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/5204-resize-image-high-quality.html
【问题讨论】:
你尝试过哪些变体? 假设您的图像是每像素 1 位,您能否在缩放之前转换为灰度(8 BPP 或更好)? @cbranch 可能是这样,因为我没有。但是我如何识别它是否首先进行转换? 如果您的解决方案有效,请将其作为答案发布并接受。 【参考方案1】:原来@cbranch 是对的,所以首先是我找到的解决方案(没有发布):
- (BOOL) isGrayscaleImage:(UIImage *)image
CGImageRef imgRef = [image CGImage];
CGColorSpaceModel clrMod = CGColorSpaceGetModel(CGImageGetColorSpace(imgRef));
switch (clrMod)
case kCGColorSpaceModelMonochrome :
return YES;
default:
return NO;
- (UIImage *) imageToGrayscale:(UIImage *)image
CGSize size = image.size;
CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(nil, size.width, size.height, 8, 0, colorSpace, kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, rect, [image CGImage]);
CGImageRef grayscale = CGBitmapContextCreateImage(context);
UIImage *img = [UIImage imageWithCGImage:grayscale];
return img;
请注意,这对于 iOS5 来说不是必需的,不知道为什么(文档中对此没有任何说明)。
【讨论】:
以上是关于缩放黑白图像的主要内容,如果未能解决你的问题,请参考以下文章