gpt4 book ai didi

objective-c - 从位图数据创建 NSImage

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:33 26 4
gpt4 key购买 nike

好的,看来我正在创建一个 PDFDocument,其中我创建的图像中的 pixelWidth 不正确。所以问题就变成了:如何获得图像的正确分辨率?

我从扫描仪的位图数据开始。我这样做:

CGDataProviderRef provider= CGDataProviderCreateWithData(NULL (UInt8*)data, bytesPerRow * length, NULL);
CGImageRef cgImg = CGImageCreate (
width,
length,
bitsPerComponent,
bitsPerPixel,
bytesPerRow,
colorspace,
bitmapinfo, // ? CGBitmapInfo bitmapInfo,
provider, //? CGDataProviderRef provider,
NULL, //const CGFloat decode[],
true, //bool shouldInterpolate,
kCGRenderingIntentDefault // CGColorRenderingIntent intent
);
/* CGColorSpaceRelease(colorspace); */

NSData* imgData = [NSMutableData data];
CGImageDestinationRef dest = CGImageDestinationCreateWithData
(imgData, kUTTypeTIFF, 1, NULL);
CGImageDestinationAddImage(dest, cgImg, NULL);
CGImageDestinationFinalize(dest);
NSImage* img = [[NSImage alloc] initWithData: imgData];

那里似乎没有任何地方包括以英寸或磅为单位的实际宽度/高度,也没有实际分辨率,我现在确实知道...我怎么了应该这样做吗?

最佳答案

如果您有一大块数据,将其转换为 NSImage 的最简单方法是使用 NSBitmapImageRep。具体是这样的:

NSData * byteData = [NSData dataWithBytes:data length:length];
NSBitmapImageRep * imageRep = [NSBitmapImageRep imageRepWithData:byteData];
NSSize imageSize = NSMakeSize(CGImageGetWidth([imageRep CGImage]), CGImageGetHeight([imageRep CGImage]));

NSImage * image = [[NSImage alloc] initWithSize:imageSize];
[image addRepresentation:imageRep];

...use image

关于objective-c - 从位图数据创建 NSImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416599/

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