Как изменить размер изображения с хорошим качеством в iPhone - PullRequest
13 голосов
/ 13 июля 2011

Я хочу создать библиотеку фотографий в качестве существующей библиотеки фотографий в iPhone.Я добавляю изображение в scrollviewer, который выбирается из библиотеки фотографий.Перед добавлением изображения я изменяю размер выбранного изображения и устанавливаю его в ImageView Control. Но когда я сравниваю качество добавленного изображения с качеством изображения в библиотеке фотографий iPhone, мое контрольное изображение не подходит.Как обеспечить качество и устранить проблему переполнения памяти.

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

}

Ответы [ 2 ]

21 голосов
/ 13 июля 2011

Я тоже столкнулся с этой проблемой.Я думаю, что вы используете iPhone 4 с Retina Display.Даже если это не так, вы должны это учитывать.Вместо UIGraphicsBeginImageContext() используйте UIGraphicsBeginImageContextWithOptions() и используйте свойство scale UIScreen для третьего аргумента.Все устройства iOS имеют свойство scale, на iPhone 4 оно установлено на 2.0;в остальном, когда я пишу это, он установлен на 1,0.

Таким образом, ваш код с этими изменениями становится

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

}
0 голосов
/ 05 ноября 2018

Следуя решению ageektrapped, для прозрачных изображений PNG вы должны установить для второго параметра значение NO / false для

UIGraphicsBeginImageContextWithOptions(..., NO, ...); 

решит проблему с черным / белым фоном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...