如何生成具有特定分辨率和特定大小的NSImage,单位为mm

时间:2015-12-18 02:56:57

标签: objective-c cocoa nsimage nsimagerep

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

NSString * image = [[NSImage alloc] initWithSize:NSMakeSize(1512,756)];

在上面的代码行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];

1 个答案:

答案 0 :(得分:0)

你的问题有些令人困惑,因为你声明你想要一个正方形图像(128 x 128mm),然后尝试构建一个矩形图像(1512 x 756pts)。

猜测:您可能需要了解NSImageNSImageRep之间的区别以及它们之间的互动方式。阅读Apple的 Cocoa绘图指南,特别是 Images 部分。您可能会发现Image Size and Resolution小节有助于设置图片(没有双关语; - ))。

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

HTH