2013-03-19 78 views
5

在视网膜显示上工作时遇到了问题。 NSImage的大小是正确的,但如果我从它创建NSBitmapImageRep并将其写入文件,我得到的图像女巫的大小是原始图像的两倍大。在非视网膜显示器上使用时没有这样的问题。使用图像时的视网膜显示问题

  • 我从文件(1920×1080)
  • 创建NSImage中我做了一些图纸上
  • 我从图纸图像创建NSBitmapImageRep
  • 我把它写到文件
  • 我得到的图像与3840X2160尺寸

是什么原因造成的?



如果我打开图像并保存它没有编辑,我得到

NSImage *imageFromFile = [[NSImage alloc] initWithContentsOfURL:fileURL]; 
NSBitmapImageRep *newRepresentation = [[NSBitmapImageRep imageRepsWithData:[imageFromFile TIFFRepresentation]]; 
NSData *savingData = [newRepresentation representationUsingType: NSPNGFileType properties: nil]; 
[savingData writeToFile:desiredFileLocationAndName atomically:no]; 
+0

查看此答案。 http://stackoverflow.com/a/17510651/1159775 – hebinda 2016-02-03 16:00:15

回答

0

图像的位图表示以像素为单位进行测量正确的尺寸图像。它的两倍大小。 NSImage为您提供了一个尺寸,在视网膜设备上每点测量2个像素点。它给你的东西没有错。

+0

有什么特别的你需要做的,新的维度变得困难? – 2013-03-19 13:25:53

+0

问题是,当我打开图像并使用我的应用程序进行处理时,然后当我保存图像时,以像素为单位获取图像的两倍。我需要保持原始图像的大小。 – hockeyman 2013-03-19 13:34:58

+0

你可以发布你正在使用的每个步骤的代码吗?我认为你可以设置一个标志来避免这个问题。 – 2013-03-19 13:38:57