2011-10-30 13 views
1

ウェブから画像を取得して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

+0

どのようなパターンを試しましたか? –

+0

私たちにいくつかのコードを教えてください。 – zaph

+2

イメージが1ビット/ピクセルであると仮定して、スケーリングする前にグレースケール(8 BPPまたはそれ以上)に変換できますか? – cbranch

答えて

2

が@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ではこれは必須ではないことに注意してください(ドキュメントには何も記載されていません)。

関連する問題