gpt4 book ai didi

image - 翻转图像似乎使用惰性评估

转载 作者:行者123 更新时间:2023-12-01 10:07:20 26 4
gpt4 key购买 nike

我正在尝试使用 Racket “2htdp/image”翻转图像列表。

这是一个不起作用的最小示例:

#lang racket
(require 2htdp/image)
(define images
(list
(bitmap "../data/player/player1.png")
(bitmap "../data/player/player2.png")
(bitmap "../data/player/player3.png")))
(define flipped (map flip-horizontal images))

在我看来(由于在 DrRacket 中绘制图像的速度)列表“翻转”的内容被延迟评估。这意味着只有在我尝试访问图像时才会计算其翻转版本。一旦我将此 Racket 文件导入 Universe(使用“2htdp/universe”),这就会成为一个问题,因为我最初在使用翻转图像时性能不佳。

我查看了 implementation “水平翻转”,我看不出任何明显的原因。不过,我还没有研究“make-translate”和“make-image”的实现。

我无法使用强制强制计算图像,调试器显示 object:image 作为列表内容。我不确定究竟发生了什么,以及如何防止这个问题并在启动时实际计算所有图像。

知道为什么会发生这种情况和/或如何正确解决它吗?谢谢。

批准的答案是我的问题的解决方案,所以我最后只是将最后一行更改为:

(define flipped (map (compose freeze flip-horizontal) images))

最佳答案

您说得对,直到显示图像内容时才实际计算图像内容。您可以使用 freeze ,如果您需要提前计算图像,它会将图像转换为位图。

在您的示例中,尝试将 flipped 的定义更改为以下内容:

(define flipped (map (compose1 freeze flip-horizontal) images))

关于image - 翻转图像似乎使用惰性评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25065757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com