Core Image: после использования CICrop применение композитного фильтра не выстраивается в линию

Я использую CICrop для обрезки изображения до определенного размера, отрезая верх и низ изображения.

Затем я применяю что-то вроде фильтра CIMultiplyCompositing, чтобы комбинировать обрезанное изображение с другим изображением.

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

Итак, я проверил следующее:

NSLog(@"image after crop: %g, %g, %g, %g", imageToFilter.extent.origin.x,
 imageToFilter.extent.origin.y,
 imageToFilter.extent.size.width,
 imageToFilter.extent.size.height);
NSLog(@"second image: %g, %g, %g, %g", secondImage.extent.origin.x,
 secondImage.extent.origin.y,
 secondImage.extent.size.width,
 secondImage.extent.size.height);

Что показывает, что origin.y обрезанного изображения имеет смещение, которое я вижу (результат использования CICrop):

image after crop: 0, 136, 3264, 2176
second image: 0, 0, 3264, 2176

Итак, есть ли способ для reset обрезанных изображений "размер" rect, так что origin.y равен нулю? Проверка документов для CIImage, "степень" - это свойство только для чтения.

Или мне придется сделать какое-то ужасно неэффективное преобразование в другой тип изображения/исходные данные, а затем вернуться к CIImage?

Спасибо за любой совет.

1 ответ

Я понял ответ на этот вопрос... и это легко. Мне просто нужно было применить преобразование "Перевод" на CIImage после обрезки его, например:

imageToFilter = [imageToFilter imageByApplyingTransform:CGAffineTransformMakeTranslation(0, -imageToFilter.extent.origin.y)];

Это эффективно переводит свое y-начало в 0.

licensed under cc by-sa 3.0 with attribution.