首先我要创建一个CGImageRef
CGImageRef imageRef = [self createCGimageOfDocumentInPath:scaledSelection withBackgroundColor:self.backgroundColor];
然后我正在创建NSBitmapImageRep
imageData = [[NSBitmapImageRep alloc] initWithCGImage:imageRef];
然后我正在制作Retina图像(144像素/英寸)
NSSize newSize;
newSize.width = [imageData pixelsWide] * 72.0 / 144; // x-resolution
newSize.height = [imageData pixelsHigh] * 72.0 / 144; // y-resolution
[imageData setSize:newSize];
在我的调试器中,它说
我的imageData->NSImageRep->_size = NSSize(320/240)
pixelsWide = 640
和pixelsHigh = 480
看起来是正确的,我希望图像的大小为320/240,但我希望它是视网膜所以我希望像素加倍,对吗?
当我保存此图像并加载它时,它最终的高度/宽度为640 / 480--但也是144像素/英寸(视网膜)
所以我想我只需要一种方法在保存之前将我的图像调整为一半,或者我可能会以错误的方式进行此操作?以前有人做过这样的事吗?
答案 0 :(得分:0)
事实证明,OSX记录了使用屏幕截图工具捕获的图像,然后告诉预览以半尺寸打开该图像。因此实际上不可能在预览中创建一个打开一半大小的图像,除非你在某处弄乱了OS文件。但这并不重要,因为如果您打开使用Chrome中的屏幕截图工具拍摄的图像或预览之外的其他应用程序,它也会以双倍大小打开。所以它似乎只是Apple为Preview + Built-in Screenshots创建的特殊外壳。
这当然是所有个人的推测,因为我实际上找不到任何文档或更多信息 - 但是,我可以告诉你,我创建了一个内置截图图像的精确复制品。包括与图像关联的所有元数据和属性,它在预览中仍然以不同方式打开。
我尝试更改NSBitmapImageRef,CGImage,CGContext中的任何相关属性,以尝试获取此属性。尝试更改NSEXIFProperties也无济于事。 (相关,无论你在元数据中改变什么,它都不会改变实际图像 - 结果证明它们只是标签。这是有道理的,因为我已经看到了带有.jpeg扩展名的GIF)
这是一篇有关缩放预览中打开的图像的人的文章,但这与我想做的相反
http://www.macissues.com/2014/03/29/adjust-retina-macbook-screenshots-to-be-actual-size/
无论如何,经过多次挖掘,我担心我现在必须将这个案子关闭。如果有人偶然发现并找到解决方案,请告诉我:))