Фильтр CIImage растягивает мое изображение по вертикали

У меня есть изображение, которое я использую в пользовательском файле UITableViewCell. Изображение представляет собой черный треугольник на прозрачном фоне, и я использую фильтр CIColorInvert, чтобы сделать его белым треугольником на прозрачном фоне.

Отфильтрованное (перевернутое) изображение растягивается по вертикали, как я могу предотвратить это?

Если я загружаю UIImage напрямую, не выполняя фильтрацию, я получаю следующее:

стрелка в порядке, но черная

Если я применяю CIFilter, я получаю следующее:

введите здесь описание изображения

Вот мой код:

// create the white triangle
CIImage *inputImage = [[CIImage alloc] initWithImage:
                       [UIImage imageNamed:@"TriangleRight"]];

CIFilter *invertFilter = [CIFilter filterWithName:@"CIColorInvert"];
[invertFilter setDefaults];
[invertFilter setValue: inputImage forKey: @"inputImage"];

CIImage *outputImage = [invertFilter valueForKey: @"outputImage"];

CIContext *context = [CIContext contextWithOptions:nil];

rightArrow = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:outputImage.extent]];

В обоих случаях я устанавливаю изображение в UIImageView следующим образом:

cell.arrow.image = rightArrow;

Размеры UIImageView составляют 15x15 (в IB). TriangleRight.png — 15x15 пикселей, [email protected] — 30x30 пикселей.

Что мне не хватает, чтобы CIFilter не растягивал изображение?

ОБНОВЛЕНИЕ: через 5 минут после публикации вопроса я понял проблему: я использую Auto Layout, а UIImageView не имеет явного ограничения по высоте (только по ширине). Добавление явного ограничения высоты решило проблему. Однако это все еще не объясняет, почему использование UIImage напрямую работало (даже без явного ограничения высоты).


person mluisbrown    schedule 21.04.2013    source источник


Ответы (1)


UIImageOrientation originalOrientation = self->imageview.image.imageOrientation;
imageview.image = [[UIImage alloc] initWithCGImage:imgRef scale:1.0     orientation:originalOrientation];

Кроме того, использование исходной ориентации должно было исправить это.

person Roecrew    schedule 05.05.2013