Форум программистов, компьютерный форум 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 по нему можно прочесть параметры размера или записать через view.frame=rect новое значение
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) { str=;
Objective-C Литература по object c Подскажите хорошую литературу по 1) object c , 2) и с уклоном на ios разработку. Хочу начать изучать object c , но еще ничего не знаю, подскажите с чего начать, раскажите с чего начинали, чего достигли (личный опыт и т.п. ). Скажите среду разработки пока под windows. xcode на macos пока нету возножности с него начать, думую осенью взять macbook(для разработки под ios). А пока хочу просто писать... подробнее

Показать сообщение отдельно
noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 583

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

04.08.2013, 11:19. Просмотров 605. Ответов 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);
    }
}

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