2012-03-19 4 views
2

Я читал много, также здесь, но не смог найти простой способ сделать это: В объективе c - У меня большой UIImage и небольшой UIImageView. Я хочу программно сжимать содержимое UIImage достаточно, чтобы соответствовать меньшему размеру в UIImageView. Более крупное измерение будет обрезано, и результат будет максимальным, который я могу получить из изображения без изменения пропорции.UIImage размер и обрезка по размеру

Вы можете помочь мне?

+0

Вы хотите пересчитать новое изображение или просто подключить изображение к своему изображениюПросмотреть и правильно ли отобразить его? –

+0

просто подключите его к изображению. –

+0

, дайте ответ Ахти попробовать. –

ответ

1

в представлении Я хочу, чтобы вставить изображение в I использовал этот код:

int xImage=image.size.width; 
int xButton=self.frame.size.width; 
double ratio=xButton/xImage; 
self.imageView.contentMode = UIViewContentModeScaleAspectFill; 
[self setImage:[UIImage imageWithCGImage:[image CGImage] scale:ratio orientation:image.imageOrientation] forState:UIControlStateNormal]; 
[self setImage:[UIImage imageWithCGImage:[image CGImage] scale:ratio orientation:image.imageOrientation] forState:UIControlStateHighlighted]; 
self.imageView.contentMode = UIViewContentModeScaleAspectFill; 

это решил. Недостаточно UIViewContentModeScaleAspectFill.

2

Чтобы отобразить изображение в подходящем порядке, вы действительно просто установите для своего изображения свойство imageView.image, а также настройте imageView.contentMode по своему усмотрению. Из того, что вы написали, я думаю, что UIViewContentModeScaleAspectFill - это то, что вы ищете, но поиграйте с ним, чтобы узнать, что вам лучше всего подходит.

Если вы хотите сохранить изображение на устройстве и абсолютно уверено, что вам никогда не понадобится более крупная версия изображения, а затем уменьшите масштаб, это, конечно же, сохранит дисковое пространство и будет разумным делом.
Возможно, вы сделаете это через CoreGraphics. Вы настроили контекст растрового изображения с нужными размерами и попросите изображение нарисовать себя там, а затем верните изображение результата.
Это, однако, было бы довольно дорогостоящим для достижения производительности, и вы должны делать это только один раз для каждого изображения, которое вам нужно сжать. Также вы не хотите делать это в своей основной нити, но GCD делает это очень просто.

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