在我希望的因子计划中:
优选地:
如果不便携,应该在Windows上运行。
如果有外部依赖关系,可以自由分发并且易于捆绑(比如dll / so文件)。
如果图像是元组image
,那么(2)(显示)由ui
和images.viewer`vocabs覆盖。
但我无法找到一种直接的方法来创建和绘制image
,或以栅格格式输出它。
我不在乎:
在Factor中执行此操作的最简单方法是什么?
答案 0 :(得分:1)
按顺序:
我们正在谈论bitmaps,这意味着不幸的是,你需要单独处理每个字节,除非你宁愿使用记录较少的svg
vocabulary,这似乎在-featured。
好消息是因子有很多高阶函数来处理数组。另外,听起来很有发音的images.processing
词汇对于这类事情没有太多的话。
您实际想要做的事情(据我所知)是制作有效的file header,然后将图像数据和标题写入.bmp
文件。
不太容易。似乎ui.images
将采用image-name
(无论是什么 - 实现path>>
的东西,所以它可能期望一个流或文件对象?)并且显然display
它在当前的UI world
中,如果您已经拥有UI,这可能更简单。
看看world
的构造函数:
TUPLE: world < track
active? focused? grab-input? fullscreen? saved-position
layers title status status-owner text-handle handle images
window-loc pixel-format-attributes background-color promise
window-controls window-resources ;
该死的,儿子。
这个我实际上可以给出一个实现,因为一旦你掌握了它就很简单。
你在一个文件夹中有一个图像,我们将把它加载到监听器中。 (再次,显示它是一个完整的'其他故事)。
USING: images.bitmap io.encodings.binary io.files ;
: bmp-open ( path -- stream ) binary <file-reader> load-bitmap ;
<file-reader>
需要path
和encoding
(来自io.encodings
),并在堆栈上留下io.stream
,这就是load-png
},load-bitmap
等正在寻找。
这会给我们一个loading-bmp
,这比听起来更有用。
T{ loading-bitmap
{ file-header
T{ file-header
{ size 12726 }
{ offset 54 }
{ header-length 40 }
}
}
{ header
T{ v3-header
{ width 64 }
{ height 66 }
{ planes 1 }
{ bit-count 24 }
{ image-size 12672 }
}
}
{ color-index
B{
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 ~12573 more~
}
}
}
您正在寻找的数据显然位于color-index>>
。
dup color-index>>
--- Data stack:
T{ loading-bitmap f ~file-header~ ~v3-header~ f ~byte-array~ f }
B{ 255 255 255 255 255 255 255 255 255 255 255 255 255 255...
你可以随心所欲地使用该数组,然后只需执行>>color-index
(或混淆loading-bitmap
的构造函数),并将这些字节写入文件。
TUPLE: loading-bitmap
file-header header color-palette color-index bitfields ;
像loading-bitmap>bytes
或bitmap>bytes
之类的东西可以帮助你。
昨晚我写这个答案的时候,我完全不想在RosettaCode上查看与位图有关的事情。
Bézier曲线,变化,嗯,方差:
和more:D