2013-04-05 2 views
3

У меня возникли проблемы с отображением изображений с классом UIImageView. По-видимому, пикселизация происходит в основном на краях изображения, которое я пытаюсь показать.pixelated iphone UIImageView

Я попробовал изменить свойство «Рендеринг с антиалиасингом края» безрезультатно.

Файлы изображений содержат изображения большего размера, чем на экране.

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

http://i.imgur.com/QpUOTOF.png

Солнце в этот образ является проблема, которую я говорю. Есть идеи?

+0

Этот тип проблемы может возникать в элементах пользовательского интерфейса, когда указанные свойства фрейма (в частности, источник) не являются целыми числами. Попробуйте выполнить измерение с помощью '(int)' при указании рамки изображения. – daltonclaybrook

ответ

5

Изменение размера изображения на лету быстро и качественно. Для объединенных изображений стоит добавить дополнительное пространство для пакета, чтобы включить сокращенные версии. Для загруженных изображений вы можете добиться лучших результатов, изменив размер с помощью Core Graphics на новый UIImage, прежде чем устанавливать свойство изображения.

CGSize newSize = CGSizeMake(newWidth, newHeight); 

UIGraphicsBeginImageContextWithOptions(newSize, // context size 
             NO,  // opaque? 
             0);  // image scale. 0 means "device screen scale" 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
[bigImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

Спасибо за объяснение. Я отдам это. – Mgill404

0

Насколько велико ваше изображение и каков размер изображения? Не полагайтесь на UIImageView, чтобы уменьшить его. Вероятно, вам необходимо изменить его размер вручную. Это также будет немного более эффективным с точки зрения памяти.

+0

Я отдам это! Я все это с подозрением относился к этому вопросу. Должно быть, я пошел со своей кишкой. – Mgill404

3

Используйте после применения метода для получения конкретной Hight и ширина с изображением

+ (UIImage*)resizeImage:(UIImage*)image withWidth:(int)width withHeight:(int)height 
{ 
    CGSize newSize = CGSizeMake(width, height); 
    float widthRatio = newSize.width/image.size.width; 
    float heightRatio = newSize.height/image.size.height; 

    if(widthRatio > heightRatio) 
    { 
     newSize=CGSizeMake(image.size.width*heightRatio,image.size.height*heightRatio); 
    } 
    else 
    { 
     newSize=CGSizeMake(image.size.width*widthRatio,image.size.height*widthRatio); 
    } 


    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

Этот метод обратного NewImage с определенного размера, который вы указали.

0

Я использую категории, подобные этим: >>>github link <<<

делать изменения размера изображения.

Это также дает некоторые другие приятные функции для скругленных углов и т.д.

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