Objective c 黑白图像缩放
我从网络上获取一个图像并在UIImage中显示,但首先我将其缩小。问题是,如果图像是黑白的,结果非常糟糕,有很多白线穿过图片 我尝试了许多变化,但我看不到任何改进,总是相同的质量差的结果。有什么建议吗 我尝试过的一些事情(记住我在没有UIImageView的情况下工作):Objective c 黑白图像缩放,objective-c,ios,core-graphics,Objective C,Ios,Core Graphics,我从网络上获取一个图像并在UIImage中显示,但首先我将其缩小。问题是,如果图像是黑白的,结果非常糟糕,有很多白线穿过图片 我尝试了许多变化,但我看不到任何改进,总是相同的质量差的结果。有什么建议吗 我尝试过的一些事情(记住我在没有UIImageView的情况下工作): 事实证明@cbranch是正确的,因此首先是我找到的解决方案(没有发布): 请注意,这对于iOS5是不必要的,不知道为什么(文档中对此没有任何说明)。您尝试过哪些变化?假设您的图像为每像素1位,在缩放之前是否能够转换为灰
事实证明@cbranch是正确的,因此首先是我找到的解决方案(没有发布):
请注意,这对于iOS5是不必要的,不知道为什么(文档中对此没有任何说明)。您尝试过哪些变化?假设您的图像为每像素1位,在缩放之前是否能够转换为灰度(8 BPP或更高)?@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;
}