私は、同じ品質でサイズ変更することはできますが、サイズを変更することはできません。後述するように、私は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画像:
PNGリサイズ画像1:
PNGリサイズ画像2:
とリサイズ、それはあなたが圧縮し、画像を表示したいとき非Retinaディスプレイ –
にサイズを変更し、その大きさは、{750、1334}倍にあなたがすることによって表示することができますダウンしなければなりませんこのUIImage * img = {750、1334}。 img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation]; –
私の心配はそれを表示することではありません。私の要件は、元の画像サイズの半分を同じ品質でカメラロールに保存することです。 –