我对 APL 相当陌生,我想将 4x4 二进制矩阵转换为由黑白方块组成的图像 - 在这里找到的那种东西。文档说可以使用⎕WC
创建一个 GUI 对象,然后说明所需的位?我找不到任何示例,尽管有一些用于打开图片文件。
请有人提供一个使用此 APL 表达式返回的矩阵的示例吗?
4 4 ⍴ 1 0 1 0
谢谢!
给定你的矩阵,matrix←4 4 ⍴ 1 0 1 0
每个 RGB 像素都被编码为以 256 为基数的单个整数:cb ← matrix × 256 ⊥ 255 255 255
现在我们创建位图:'bm' ⎕WC 'Bitmap' ('CBits' cb)
并创建对应PNG的内容:png ← bm.MakePNG
让我们创建一个本地(即非 APL)容器文件并获取它的 tie number:tn ← '\tmp\pic.png' ⎕NCREATE ¯1
附加数据:png ⎕NAPPEND tn
解开文件:⎕NUNTIE tn
下面是所有代码作为一个程序,将文件名作为左参数,掩码作为右参数:
∇ filename PNG matrix ; cb ; bm ; png ; tn
cb ← matrix × 256 ⊥ 255 255 255
'bm' ⎕WC 'Bitmap' ('CBits'cb)
png ← bm.MakePNG
tn ← filename ⎕NCREATE ¯1
png ⎕NAPPEND tn
⎕NUNTIE tn
∇
但是,您可能希望稍微缩放图像以实际看到它,因此让我们定义一个进行缩放的辅助函数:
Scale ← { ⍺ / ⍺ ⌿ ⍵ }
现在让我们尝试一下:
'\tmp\bigpic.png' PNG 100 Scale 3 3 ⍴ 1 0 1 1 1 0 0 0 0
]Open \tmp\bigpic.png
这是一个程序,它在单独的窗口中显示图片:
∇ Show matrix ; cb ; bm
cb ← matrix × 256 ⊥ 255 255 255
'bm' ⎕WC 'Bitmap' ('CBits'cb)
'f' ⎕WC 'Form' ('Coord' 'ScaledPixel') ('Size' (⍴ matrix))
'f.img' ⎕WC 'Image' ('Points' 0 0) ('Picture' bm)
∇
所以我们可以这样做:
Show 100 Scale 3 3 ⍴ 1 0 1 1 1 0 0 0 0
位图对象的完整文档]Help Bitmap
可以通过输入在线获得,也可以通过键入Bitmap
并按 F1 键离线获得。