如何生成具有特定分辨率和特定大小(mm)的NSImage



我是objective-c和cocoa编程的新手。我正在尝试生成高128毫米、宽128毫米、分辨率为300 DPI的图像。

NSString*image=[[NSImage alloc]initWithSize:NSMakeSize(1512756)];

在上面的代码行中,1512和756被视为点。所以我无法将它转换为我需要的东西。它正在创建大小为(3024*1512)的图像。

你能提出一些建议吗。。。提前谢谢。

这是我尝试过的代码

NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(2268, 2268)];
[image lockFocus];
// Draw Something
[image unlockFocus];
NSString* pathh = @"/Users/abcd/Desktop/Images/1234.bmp";
CGImageRef cgRef = [image CGImageForProposedRect:NULL
                                                 context:nil
                                                   hints:nil];
        NSBitmapImageRep *newRep = [[NSBitmapImageRep alloc]    initWithCGImage:cgRef];

        NSSize copySize; // To change to 600 DPI
        copySize.width = 600 * [newRep pixelsWide] / 72.0;
        copySize.height = 600 * [newRep pixelsWide] / 72.0;
        [newRep setSize:copySize];   //This input is not working
        NSData *pngData = [newRep representationUsingType:NSBMPFileType properties:nil];
        [pngData writeToFile:pathh atomically:YES];

你的问题有点令人困惑,因为你说你想要一个正方形的图像(128 x 128毫米),然后试图构建一个矩形的图像(1512 x 756毫米)。

猜测:你可能需要了解NSImageNSImageRep之间的区别以及它们是如何交互的。阅读Apple的Cocoa绘图指南,特别是图像部分。您可以在"图像大小和分辨率"小节中找到设置图片的帮助(并非双关语;-))。

你可以阅读的另一个领域是打印——这通常需要生成300dpi的图像。

HTH

最新更新