Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Картинки в NORETINA устройствах - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Mac OS open-edit-save image? http://www.cyberforum.ru/objective-c/thread932791.html
Здраствуйте! Мне нужно сосздать бистро програмку под Мас ОС простенькую. Которая откриваэт изображения, потом что там изменяет (что небуть) и затем сохраняет Самому разобратся пока не получается...
Objective-C NSURL Здравствуйте мне нужно выводить ссылку на сайт в *Label не просто текстом, а именно ссылка, чтобы можно было по ней тапнуть и перейти на страницу. Заранее спасибо Добавлено через 1 час 20 минут... http://www.cyberforum.ru/objective-c/thread931402.html
Программное управление размерами UIView Objective-C
итак начнем с того, что нам предоставляет ObjC из коробки ; метод мгновенно установит параметры прямоугольника области view и свойство view.frame по нему можно прочесть параметры размера...
Objective-C Транформировать UIImage
Возможно ли с помощью метода CGContextConcatCTM трансформировать UIImage так, как на скриншоте? Если нет, то какой метод нужен для такой транформации?
Objective-C Как использовать dispatch_after? http://www.cyberforum.ru/objective-c/thread927759.html
NSMutableString bufferAnswer; bool isBufferAnalysed; +(void) waitAnalys:(NSArray*) strInArray { isBufferAnalysed=false; NSMutableString *str; while (!isBufferAnalysed) {...
Objective-C Литература по object c Подскажите хорошую литературу по 1) object c , 2) и с уклоном на ios разработку. Хочу начать изучать object c , но еще ничего не знаю, подскажите с чего начать, раскажите с чего начинали, чего... подробнее

Показать сообщение отдельно
noname_club
103 / 94 / 10
Регистрация: 01.05.2013
Сообщений: 598

Картинки в NORETINA устройствах - Objective-C

04.08.2013, 11:19. Просмотров 614. Ответов 0
Метки (Все метки)

Думаю некоторые сталкивались с тем что обычные устройства не умеют правильно интерполировать(сгладить) изображение, если они превышает размеры своего контейнера.

Если на retina с этим делом все "хорошо".

То на обычном iphone можно увидеть вот такую картинку

Картинки в NORETINA устройствах
верхнее изображение без обработки.
для нижнего применено программное сглаживание

Результат очевиден: картинка со сглаживаем выглядит лучше.

Осталось выяснить как это "сглаживание" делается

объявим две глобальные фукнции:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// private functions
 
// use frameworks:
// #import <QuartzCore/QuartzCore.h>
 
UIImage* sys_objAntiAlias(UIImage*img, CGSize size) {
    
    UIGraphicsBeginImageContext(size);
    [img drawInRect:CGRectMake( 0 , 0  , size.width , size.height ) ];
    CGContextSetInterpolationQuality( UIGraphicsGetCurrentContext() , kCGInterpolationHigh );
    
    img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return img;
}
 
void sys_objAntiAliasAfter(id obj) {
 
    [obj layer].shouldRasterize = NO;
    [obj layer].rasterizationScale = 1;
    [obj layer].edgeAntialiasingMask = -1;
    [obj setClipsToBounds:YES];
    [obj layer].masksToBounds = YES;
}
использование

Objective-C
1
2
3
4
5
6
7
8
9
// autolayuot отключен!
-(void)viewWillAppear:(BOOL)animated {
    
    UIImage *newimage = sys_objAntiAlias(_myimg2.image, _myimg2.frame.size);
    
    _myimg2.image = newimage;
    
    sys_objAntiAliasAfter(_myimg2);
}
так как retina устройства не требуют данной обработки изображений, то объявим макрос retina детектора

Objective-C
1
#define isRetina ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] > 1.1f)
и будем проверять, и в случае отсутствия retina экрана на устройстве, будем применять сглаживания

Objective-C
1
2
3
4
5
6
7
8
9
-(void)viewWillAppear:(BOOL)animated {
    if (!isRetina) {
        UIImage *newimage = sys_objAntiAlias(_myimg2.image, _myimg2.frame.size);
        
        _myimg2.image = newimage;
        
        sys_objAntiAliasAfter(_myimg2);
    }
}

данный код является сырым полуфабрикатом, дальнейшие подробности правильного использования в проектах и другие возможности применения сглаживания будут раскрыты в ходе обсуждения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru