Изменить размер UIImage на месте - PullRequest
1 голос
/ 07 января 2012

У меня есть категория (очень популярный код, найденный в сети) до UIImage для различных манипуляций с изображениями.

- (UIImage *)imageScaledToSize:(CGSize)newSize {
    UIGraphicsBeginImageContext(newSize);
    [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}

Одним из аспектов, которым я интенсивно пользуюсь, является уменьшение изображения. Мое приложение может брать довольно большие изображения и масштабировать их до «рабочего» размера. Тем не менее, есть случаи, когда приложение вылетает из-за памяти. Это связано с тем, что категория создает новое масштабированное изображение из оригинала. Поэтому исходное ОГРОМНОЕ изображение остается резидентным, в то время как создается новое, но все же большое изображение меньшего размера.

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

1 Ответ

2 голосов
/ 07 января 2012

Да, и даже есть полностью работающий пример проекта Apple , который сделает это за вас.

Насколько я знаю, нет ограничений по размеру изображения, которое оно может уменьшать. Конечно, чем больше изображение, тем больше времени занимает процесс.

...