2014-10-15 2 views
2

Это скорее логический вопрос, все работает нормально.Изображение большего размера в уменьшенном виде изображения

У меня есть ImageView, и для этого я загружаю изображения с веб-сервера. Наш веб-сервер хранит изображение самого большого размера, а затем меняю изображения на нужные устройства. Так что скажем, если у меня есть UIImageView размером 200 * 200, и я загружаю изображение 400 * 400, я масштабирую изображение до 200 * 200, а затем помещаю его в изображение, я попытался поместить изображение 400 на 400 в 200 на 200 изображений, и это выглядит хорошо для меня (без пикселизации). Способ, которым я реализовал уменьшение масштаба:

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 

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

Требуемые предложения.

ответ

1

Вы должны быть в порядке, чтобы просто присвоить 400x400 UIImage 200x200 UIImageView. CoreAnimation будет заниматься масштабированием изображения под ним.

Качество изображения

Если вы хотите поэкспериментировать с различными изображениями масштабирования качества, вы можете установить minificationFilter на слое UIImageView в. По умолчанию kCAFilterLinear, что, я думаю, будет хорошо для вашего использования. Несколько пикселей из изображения 400x400 будут выбраны и линейно смешаны вместе, чтобы получить цвет пикселя изображения 200x200. kCAFilterNearest обеспечит вам лучшую производительность за счет качества изображения (один пиксель из изображения 400x400 выбран для получения цвета для пикселя изображения 200x200).

Вместо этого вы можете поэкспериментировать с использованием kCAFilterTrilinear, что должно улучшить качество изображения за счет некоторой производительности. В документации не указывается, какие устройства на самом деле будут иметь влияние, хотя this guy's успешно использовал его на iPad 2, что заставляет меня думать, что он может поддерживаться на всех устройствах сейчас. В документации также указано, что ваше изображение может иметь размеры 2, чтобы это повлияло.

Performance

Вы можете масштабировать изображение вниз от 200x200, возможно, в качестве оптимизации производительности для экономии памяти и CoreAnimation время рендеринга (включая масштабирование изображения), но я бы не сделать это, если у вас нет причина думать, что производительность вашего приложения действительно выиграет от этого.

+0

Привет, Джеймс, Спасибо за ваш ответ. Производительность для меня не проблема. Я сделал это изначально, поэтому у меня нет проблемы с пикселизацией. Теперь, после внедрения, я пытался понять, действительно ли требуется ручное масштабирование. Даже я чувствую, что это избыточно. По вашему опыту, когда-нибудь наблюдали какие-либо проблемы с пикселизацией с уменьшением масштаба CoreAnimation по умолчанию (поддерживая соотношение сторон)? –

+0

Я всегда был доволен масштабированием Core Animation. Я думаю, что размеры, которые вы используете (поменьше каждого измерения), должны означать, что масштабирование изображения довольно хорошо для вас. Я обновил свой ответ с более подробной информацией, которая может быть полезна. –

+0

Спасибо большое Джеймс, это было действительно полезно. Раньше я не знал об этом minificationFilter. Еще раз спасибо :) –

Смежные вопросы