From d647261de22179edd8a734e6a6f293c61f870e1d Mon Sep 17 00:00:00 2001 From: themightyoarfish Date: Thu, 11 Jun 2015 14:59:57 +0200 Subject: [PATCH 1/2] Fixed alpha preservation when converting 4-channel Mat to UIImage --- modules/imgcodecs/src/ios_conversions.mm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/imgcodecs/src/ios_conversions.mm b/modules/imgcodecs/src/ios_conversions.mm index 43268734c9..0b771f1cbc 100644 --- a/modules/imgcodecs/src/ios_conversions.mm +++ b/modules/imgcodecs/src/ios_conversions.mm @@ -66,6 +66,10 @@ UIImage* MatToUIImage(const cv::Mat& image) { CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + // Preserve alpha transparency, if exists + bool alpha = cvMat.channels() == 4; + CGBitmapInfo bitMapInfo = (alpha ? kCGImageAlphaLast : kCGImageAlphaNone) | kCGBitmapByteOrderDefault; + // Creating CGImage from cv::Mat CGImageRef imageRef = CGImageCreate(image.cols, image.rows, @@ -73,8 +77,7 @@ UIImage* MatToUIImage(const cv::Mat& image) { 8 * image.elemSize(), image.step.p[0], colorSpace, - kCGImageAlphaNone| - kCGBitmapByteOrderDefault, + bitmapInfo, provider, NULL, false, From 125782c061b0b0d6164200c95730ff8f6cf1a0a7 Mon Sep 17 00:00:00 2001 From: themightyoarfish Date: Wed, 17 Jun 2015 12:08:34 +0200 Subject: [PATCH 2/2] fixed copy-paste errors --- modules/imgcodecs/src/ios_conversions.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/imgcodecs/src/ios_conversions.mm b/modules/imgcodecs/src/ios_conversions.mm index 0b771f1cbc..8f2b4e84fc 100644 --- a/modules/imgcodecs/src/ios_conversions.mm +++ b/modules/imgcodecs/src/ios_conversions.mm @@ -67,8 +67,8 @@ UIImage* MatToUIImage(const cv::Mat& image) { CGDataProviderCreateWithCFData((__bridge CFDataRef)data); // Preserve alpha transparency, if exists - bool alpha = cvMat.channels() == 4; - CGBitmapInfo bitMapInfo = (alpha ? kCGImageAlphaLast : kCGImageAlphaNone) | kCGBitmapByteOrderDefault; + bool alpha = image.channels() == 4; + CGBitmapInfo bitmapInfo = (alpha ? kCGImageAlphaLast : kCGImageAlphaNone) | kCGBitmapByteOrderDefault; // Creating CGImage from cv::Mat CGImageRef imageRef = CGImageCreate(image.cols,