我试图从unsigned char*中的原始数据创建一个新的Image.我从存储的数据中获得每像素位数.我尝试将原始数据转换为NSData,但结果图像为零,
unsigned char*bitmap = myData;
NSUInteger myImageDataLength = strlen((const char*)bitmap);
NSData*d = [NSData dataWithBytes:位图长度:myImageDataLength];
imgView.image = [UIImage imageWithData:d];
然后我尝试使用上下文来创建一个图像,如下所示:
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
int width = mWidth;
int height = mHeight;
size_t bpp = mBpp;
size_t bpc = 8;
size_t bpr = (width * 4);
CGContextRef context = CGBitmapContextCreate(bitmap, width, height, 8, bpr, colorspace, kCGImageAlphaNone);
CGImageRef cgImage = nil;
if (context != nil) {
cgImage = CGBitmapContextCreateImage (context);
CGContextRelease(context);
}
CGColorSpaceRelease(colorspace);
UIImage *newImage = [UIImage imageWithCGImage:cgImage];
Run Code Online (Sandbox Code Playgroud)
我收到一条错误信息
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component color space; kCGImageAlphaNone; 64 bytes/row.
我尝试通过设置许多值来解决它,但无法找到任何结果.我在网上搜索了这个解决方案,但所有其他人都是从现有图像创建一个图像,所以他们得到每个组件的比特值和所有...我怎样才能从这个数据创建图像???
原始图片:

结果图片:

产生的图像应该变形.(与fatBooth和其他应用程序一样扭曲)
以下代码UIImage从原始像素数据创建实例,假设您具有:
结果UIImage将分配给变量uiImage.
CGDataProviderRef provider = CGDataProviderCreateWithData(
NULL,
pixelData,
imageHeight * scanWidth,
NULL);
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
CGImageRef imageRef = CGImageCreate(imageWidth,
imageHeight,
8,
bytesPerPixel * 8,
scanWidth,
colorSpaceRef,
bitmapInfo,
provider,
NULL,
NO,
renderingIntent);
UIImage *uiImage = [UIImage imageWithCGImage:imageRef];
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpaceRef);
CGImageRelease(imageRef);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |