Создание png UIImage из рисунка OpenGL

Я экспортирую свои рисунки OpenGL в UIImage, используя следующий метод:

-(UIImage*)saveOpenGLDrawnToUIImage:(NSInteger)aWidth height:(NSInteger)aHeight { NSInteger myDataLength = aWidth * aHeight * 4; GLubyte *buffer = (GLubyte *) malloc(myDataLength); glReadPixels(0, 0, aWidth, aHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer); GLubyte *buffer2 = (GLubyte *) malloc(myDataLength); for(int y = 0; y < aHeight; y++) { for(int x = 0; x < aWidth * 4; x++) { buffer2[(aHeight-1 - y) * aWidth * 4 + x] = buffer[y * 4 * aWidth + x]; } } CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL); int bitsPerComponent = 8; int bitsPerPixel = 32; int bytesPerRow = 4 * aWidth; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; CGImageRef imageRef = CGImageCreate(aWidth, aHeight, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); UIImage *myImage = [UIImage imageWithCGImage:imageRef]; return myImage; } 

Но фон всегда черный, а не прозрачный.

Я попытался использовать CGImageRef imageRef = CGImageCreateWithPNGDataProvider(provider, NULL, NO, kCGRenderingIntentDefault); но он всегда генерирует нуль.

Как я могу заставить это обрабатывать прозрачный фон?

Это вопрос о том, как создать изображение из необработанных RGBA-данных. Я думаю, что вам не хватает дескриптора в информации растрового изображения, чтобы сказать, что вам нужен альфа-канал …

Попробуйте создать UIImage из необработанных данных RGBA

В первом комментарии описывается использование kCGBitmapByteOrder32Big|kCGImageAlphaLast

  • Проблема при проверке UIImage имеет альфа (прозрачный) цвет или нет
  • Смещение смещения аспектности UIImage
  • Сохранить UIView с CALayer.mask как UIImage в iOS 6
  • Как изменить размер UIImage при сохранении его соотношения сторон
  • Поворот UIImage без всплесков памяти
  • UIActivityViewController думает, что мой jpg является видеороликом при совместном использовании по URL-адресу файла
  • Снимок экрана, когда камера находится на -iOS
  • Объект Unarchive UIImage возвращает изображение CGSizeZero с использованием NSKeyedUnarchiver на iOS 8
  • Создайте UIImage из 2 UIImages и ярлыков
  • Как преобразовать текст в изображение?
  • Как обесцветить UIImage?
  • Давайте будем гением компьютера.