मूल आईओएस के रूप में गुणवत्ता के साथ आकार बदल छवि कैसे प्राप्त करें? - आईओएस, उद्देश्य-सी, uiimage, uiimagepngrepresentation

मैंने एक ही गुणवत्ता के साथ छवि का आकार बदलने के लिए कई संदर्भों की समीक्षा की है और लागू की है लेकिन प्राप्त करने में सक्षम नहीं है।

मैं UIView से छवि प्राप्त कर सकता हूं और नीचे बताए गए कोड के साथ आकार बदल सकता हूं: -

- (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}

पीजीजी इमेज से रिसाइज करने के बाद मैं दोनों की इमेज {375, 667} है। जो मेरी आवश्यकता के अनुसार सही है।

लेकिन दोनों आकार की छवि की गुणवत्ता मूल PNG छवि से नीचे है। मैं पहचान सकता हूं कि बटन, आइकन और टेक्स्ट धुंधले हैं।

मेरे द्वारा यह कैसे किया जा सकता है। कृपया मदद, अग्रिम धन्यवाद।

मुझे PNG छवि के समान गुणवत्ता वाले आकार की छवि की आवश्यकता है।

PNG छवि:

यहां छवि विवरण दर्ज करें

PNG Resized image 1:

यहां छवि विवरण दर्ज करें

PNG आकार की छवि 2:

यहां छवि विवरण दर्ज करें

उत्तर:

जवाब के लिए 0 № 1

अच्छी गुणवत्ता के साथ आकार

 - (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;

}

संबंधित सवाल
सबसे लोकप्रिय