iOS Изменение размера и обрезка не квадратных изображений - высокое качество - PullRequest
2 голосов
/ 13 февраля 2012

Я столкнулся со следующей проблемой: у меня есть несколько UIImage (не в квадрате), и мне нужно изменить их размер и обрезать. Я прочитал почти все вопросы о StackOverflow, но результаты, которые я получаю, не очень хорошие, я имею в виду, что полученное изображение имеет низкое качество (размытое).
Это сценарий:
1) Размер оригинальных изображений: ширина 208 пикселей - переменная высота (то есть от 50 до 2500)
2) Результат изображения: ширина 100 пикселей - высота макс 200 пикселей

Вот что я сделал для достижения этого результата:

..... // missing code
CGFloat height = (100*image.size.height)/image.size.width;
self.thumbnail=[image resizedImage:CGSizeMake(100,height) 
              interpolationQuality:kCGInterpolationHigh];

..... // missing code

Метод, который я использую для изменения размера изображения, можно найти здесь , после изменения размера изображения я обрезаю его, используя следующий код:

CGRect croppedRect;
croppedRect = CGRectMake(0, 0, self.thumbnail.size.width, 200);  
CGImageRef tmp = CGImageCreateWithImageInRect([self.thumbnail CGImage], 
                                                          croppedRect);
self.thumbnail = [UIImage imageWithCGImage:tmp];
CGImageRelease(tmp);

Короче говоря, изображение изменяется и обрезается, но качество действительно плохое, учитывая, что исходное изображение имело действительно хорошее качество.
Так что вопрос в том, как добиться этого, сохраняя высокое качество изображения?

1 Ответ

1 голос
/ 13 февраля 2012

Если вы ориентируетесь на iOS 4 и более поздние версии, вам следует использовать ImageIO для изменения размера изображений.

http://www.cocoabyss.com/coding-practice/uiimage-scaling-using-imageio/

...