Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 黑白图像缩放_Objective C_Ios_Core Graphics - Fatal编程技术网

Objective c 黑白图像缩放

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

我从网络上获取一个图像并在UIImage中显示,但首先我将其缩小。问题是,如果图像是黑白的,结果非常糟糕,有很多白线穿过图片

我尝试了许多变化,但我看不到任何改进,总是相同的质量差的结果。有什么建议吗

我尝试过的一些事情(记住我在没有UIImageView的情况下工作):


事实证明@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;
}