gpt4 book ai didi

iphone - 将 UIImage 转换为 CVImageBufferRef

转载 作者:技术小花猫 更新时间:2023-10-29 10:10:12 26 4
gpt4 key购买 nike

此代码大部分都有效,但生成的数据似乎失去了颜色 channel (这是我的想法),因为生成的图像数据在显示时是蓝色的!

代码如下:

UIImage* myImage=[UIImage imageNamed:@"sample1.png"];
CGImageRef imageRef=[myImage CGImage];
CVImageBufferRef pixelBuffer = [self pixelBufferFromCGImage:imageRef];

pixelBufferFromCGIImage 方法是从此处 stackoverflow 上的另一篇文章中获取的:How do I export UIImage array as a movie? (虽然这个应用程序与我正在尝试做的事情无关)它是

+ (CVPixelBufferRef)pixelBufferFromCGImage:(CGImageRef)image
{
CGSize frameSize = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image));
NSDictionary *options = @{
(__bridge NSString *)kCVPixelBufferCGImageCompatibilityKey: @(NO),
(__bridge NSString *)kCVPixelBufferCGBitmapContextCompatibilityKey: @(NO)
};
CVPixelBufferRef pixelBuffer;
CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, frameSize.width,
frameSize.height, kCVPixelFormatType_32ARGB, (__bridge CFDictionaryRef) options,
&pixelBuffer);
if (status != kCVReturnSuccess) {
return NULL;
}

CVPixelBufferLockBaseAddress(pixelBuffer, 0);
void *data = CVPixelBufferGetBaseAddress(pixelBuffer);
CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(data, frameSize.width, frameSize.height,
8, CVPixelBufferGetBytesPerRow(pixelBuffer), rgbColorSpace,
(CGBitmapInfo) kCGImageAlphaNoneSkipLast);
CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image),
CGImageGetHeight(image)), image);
CGColorSpaceRelease(rgbColorSpace);
CGContextRelease(context);
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);

return pixelBuffer;
}

我认为它与 kCVPixelFormatType_32ARGB 和 kCGImageAlphaNoneSkipLast 之间的关系有关,尽管我尝试了所有组合并得到相同的结果或应用程序崩溃。这再次将 UIImage 数据获取到 CVImageBufferRef 中,但是当我在屏幕上显示图像时,它似乎失去了颜色 channel 并显示为蓝色。图像是 png。

最佳答案

解决方案是这段代码可以按预期完美运行。 :) 问题在于使用数据创建 OpenGL 纹理。与此代码完全无关。任何搜索如何将 UIImage 转换为 CVImageBufferRef 的人,您的答案都在上面的代码中!

关于iphone - 将 UIImage 转换为 CVImageBufferRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com