Я просмотрел и применил множество ссылок для изменения размера изображения с тем же качеством, но не смог его получить.
Я могу получить изображение из 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}
Оба изображения, которые я получаю из изображения PNG после изменения размера, равны {375, 667}. Что правильно в соответствии с моим требованием.
Но качество обоих изображений с измененным размером ниже исходного изображения PNG. Я могу узнать, что кнопка, значки и текст размыты.
Как я могу это исправить. Пожалуйста, помогите, заранее спасибо.
Мне нужно изображение с измененным размером и таким же качеством, как изображение PNG.
Изображение PNG:
Изображение 1 в формате PNG с измененным размером:
Изображение 2 с измененным размером в формате PNG: