IOS: уменьшить размер изображения без снижения качества изображения - PullRequest
8 голосов
/ 02 апреля 2012

Я отображаю изображение в ячейке таблицы (имя изображения сохранено в списке). Прежде чем установить его в ячейку, я изменяю размер изображения до
imageSize = CGSizeMake(32, 32);

Но после изменения размера изображения качество изображения на сетчатке также ухудшается.

enter image description here

У меня есть оба изображения, добавленные в проект (т.е. 1x и @ 2x).

Вот так я уменьшаю размер изображения до 32x32.

+ (UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}

Любые указатели на это очень ценятся.

Спасибо

1 Ответ

19 голосов
/ 02 апреля 2012

попробуйте это: вместо UIGraphicsBeginImageContext(size); используйте UIGraphicsBeginImageContextWithOptions(size,NO,0.0);

Исходя из того, что я понимаю, вы изменяете размер изображения до 32x32 (в точках) независимо от разрешения. UIGraphicsBeginImageContextWithOptions масштабирует изображение до масштаба экрана устройства. Таким образом, у вас есть изображение, масштабированное до 32x32 точек, но разрешение сохраняется для отображения на сетчатке

(обратите внимание, что это то, что я понял из ссылки на uikit от Apple ... может быть и не так ... но так должно быть) читать здесь

...