From d647261de22179edd8a734e6a6f293c61f870e1d Mon Sep 17 00:00:00 2001 From: themightyoarfish Date: Thu, 11 Jun 2015 14:59:57 +0200 Subject: [PATCH] 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,