我正在创建一个简单的程序在球拍,进口两个位图,并导出他们在一个单一的图像。我的MacBook上的像素密度有问题,因为图像是非视网膜的。对于我的图像处理,我使用的是2 2htdp/映像库。
有没有办法来设置我的球拍程序的像素密度?
输出图像的行是:
(save-image final-image "final.png" WIDTH HEIGHT)我试图不包括太多的信息,但如果有什么我可以添加(更多的代码,例如),以使我的问题更清楚,请告诉我。
P.S:处理这个问题的方式如下:
发布于 2019-01-20 17:12:32
这不是一个完整的答案,但也许它会帮助你开始。
首先,你说“图像是非视网膜的”。这可能是一种误解。“视网膜”这个词用来描述屏幕的分辨率,你恰巧使用的是“视网膜”(如果屏幕像素太小,眼睛看不到单个的点,那么屏幕就是“视网膜”)。
然而,我的猜测是,当您在屏幕上绘制加载的图像时,显示的大小是您所期望的大小的一半?
在gui文档中的"1.8屏幕分辨率和文本缩放“部分中可以找到原因如下:
在Mac上,屏幕大小是根据绘图单元向用户描述的。Retina显示器为每个绘图单元提供两个像素,而绘图单元用于窗口大小、子窗口位置和画布绘图。字体大小的“点”相当于绘图单元。
一种解决方案是缩放加载的图像,使其大小翻倍:
(scale 2 the-loaded-image)在画之前。
最后,程序如何才能知道当前的显示器是否是视网膜显示器?函数get-display-backing-scale是您所需要的:
(require racket/gui/base)
(get-display-backing-scale)如果屏幕为视网膜,则返回2.0,否则为1.0。如果您有多个监视器,请在文档中查找函数,以查看处理该功能的详细信息。
https://stackoverflow.com/questions/54256293
复制相似问题