问题描述
好吧,看来我正在创建PDFDocument,其中我创建的图像中的pixelWidth不正确.所以问题就变成了:如何在图像中获得正确的分辨率?
Ok, it appears that the I'm creating a PDFDocument where pixelWidth is incorrect in the images that I created. So the question becomes: How do I get the correct resolution into the image?
我从扫描仪的位图数据开始.我正在这样做:
I start with bitmap data from a scanner. I'm doing this:
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];
这里似乎没有任何地方可以包含以英寸或磅为单位的实际宽度/高度,也没有包括我要做知道的实际分辨率...我该怎么办?应该这样做吗?
there doesn't appear to be anywhere in there to include the actual width/height in inches or points, nor the actual resolution, which I DO know at this point... how am I supposed to do this?
推荐答案
如果您有大量数据,将其转换为 NSImage
的最简单方法是使用 NSBitmapImageRep
.具体是这样的:
If you've got a chunk of data, the easiest way to turn it into an NSImage
is to use NSBitmapImageRep
. Specifically something like:
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
这篇关于从位图数据创建NSImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!