我正在Racket中创建一个简单的程序,该程序将导入两个位图并将其导出到单个图像中。我的MacBook上的像素密度有问题,因为图像不是视网膜图像。为了进行图像处理,我使用的是2htdp / image库。
是否可以设置球拍程序的像素密度?
导出图像的行是:
(save-image final-image "final.png" WIDTH HEIGHT)
我试图不包含太多信息,但是如果有什么我可以添加(例如,更多代码)以使我的问题更清楚的话,请告诉我。
P.S:处理通过以下方式解决此问题:
答案 0 :(得分:2)
这不是一个完整的答案,但是也许它将帮助您入门。
首先,您说“图像不是视网膜的”。这可能是一个误解。 “视网膜”一词用于描述屏幕的分辨率, 要使用(如果屏幕像素太小,则屏幕为“视网膜” 眼睛看不到单个点)。
但是,我的猜测是,当您在屏幕上绘制加载的图像时, 是您期望的一半大小?
其原因可在“ 1.8屏幕分辨率和文本缩放”部分中找到
gui
的文档中有以下说法:
在Mac OS上,屏幕尺寸以图形方式向用户描述 单位。视网膜显示屏每个绘图单位提供两个像素,而 图形单位始终用于窗口大小,子窗口 位置和画布绘图。字体大小的“要点”是等效的 到绘图单元。
一种解决方案是将加载的图像缩放到两倍大小:
(scale 2 the-loaded-image)
绘制之前。
最后,程序如何知道当前显示是否为视网膜显示?
函数get-display-backing-scale
是您所需要的:
(require racket/gui/base)
(get-display-backing-scale)
如果屏幕是视网膜,它将返回2.0,否则返回1.0。 如果您有多个监视器,请查找该功能 在文档中查看有关处理方法的详细信息。