我是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毫米)。
猜测:你可能需要了解NSImage
和NSImageRep
之间的区别以及它们是如何交互的。阅读Apple的Cocoa绘图指南,特别是图像部分。您可以在"图像大小和分辨率"小节中找到设置图片的帮助(并非双关语;-))。
你可以阅读的另一个领域是打印——这通常需要生成300dpi的图像。
HTH