2017-08-21 5 views
0

私は、同じ品質でサイズ変更することはできますが、サイズを変更することはできません。後述するように、私はUIViewのから画像を取得し、コードをサイズ変更することができる午前品質を元のiOSとしてサイズ変更した画像を取得するには?

: -

- (UIImage *)imageWithView:(UIView *)view { 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale); 
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    NSData* imageData = UIImagePNGRepresentation(image); 
    UIImage* pngImage = [UIImage imageWithData:imageData]; 
    UIImageWriteToSavedPhotosAlbum(pngImage, nil, nil, nil); // PNG image size: {750, 1334} 
    NSLog(@"PNG Image Size: %@", pngImage); 


    CGSize size = CGSizeMake(375, 667); 
    [self imageWithImage1:pngImage scaledToSize:size]; 
    [self imageWithImage2:pngImage scaledToSize:size]; 

    return image; 
} 

- (UIImage *)imageWithImage1:(UIImage *)image scaledToSize:(CGSize)newSize 
{ 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    NSData* imageData1 = UIImagePNGRepresentation(newImage); 
    UIImage* scaledImage1 = [UIImage imageWithData:imageData1]; 
    UIImageWriteToSavedPhotosAlbum(scaledImage1, nil, nil, nil); // PNG Resized image 1 size: {375, 667} 
    NSLog(@"PNG Scaled Image Size: %@", scaledImage1); 

    return newImage; 
} 

-(UIImage *)imageWithImage2:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
    // Create a bitmap context. 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 1); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    NSData* imageData1 = UIImagePNGRepresentation(newImage); 
    UIImage* scaledImage1 = [UIImage imageWithData:imageData1]; 
    UIImageWriteToSavedPhotosAlbum(scaledImage1, nil, nil, nil); // PNG Resized image 2 size: {375, 667} 
    NSLog(@"PNG Scaled Image Size: %@", scaledImage1); 

    return newImage; 
} 

PNG画像サイズ:{750、1334}

両画像Iの後PNG画像から取得していサイズ変更は{375、667}です。私の要求通り正しいです。

しかし、両方のサイズ変更された画像の品質は元のPNG画像よりも低くなっています。ボタン、アイコン、テキストがぼやけていることがわかります。

どうすれば修正できますか?助けてください、ありがとうございます。

PNG画像と同じ品質でサイズ変更された画像が必要です。

PNG画像:

enter image description here

PNGリサイズ画像1:

enter image description here

PNGリサイズ画像2:

enter image description here

+0

とリサイズ、それはあなたが圧縮し、画像を表示したいとき非Retinaディスプレイ –

+0

にサイズを変更し、その大きさは、{750、1334}倍にあなたがすることによって表示することができますダウンしなければなりませんこのUIImage * img = {750、1334}。 img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation]; –

+0

私の心配はそれを表示することではありません。私の要件は、元の画像サイズの半分を同じ品質でカメラロールに保存することです。 –

答えて

0

良い品質

- (UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
    { 
     // Create a bitmap context. 
     UIGraphicsBeginImageContextWithOptions(newSize, YES, image.scale); 
     [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
     UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return newImage; 

    } 
+0

ありがとうが、それはまたぼやけています。同じ品質ではありません。 –

+0

は全く同じ品質ではありません –

関連する問題