Matrix APL编程-如何将简单的矩阵转换为图片?
我是APL的新手,我想把一个4x4的二进制矩阵转换成一个由黑白方块组成的图像——诸如此类的东西。文档说明可以使用Matrix APL编程-如何将简单的矩阵转换为图片?,matrix,bitmap,apl,dyalog,Matrix,Bitmap,Apl,Dyalog,我是APL的新手,我想把一个4x4的二进制矩阵转换成一个由黑白方块组成的图像——诸如此类的东西。文档说明可以使用⎕WC创建GUI对象,然后说明所需的位?我找不到任何示例,尽管有一些用于打开图片文件的示例 请提供一个使用APL表达式返回矩阵的示例 4 4 ⍴ 1 0 1 0 谢谢 一种方法是将矩阵格式化为: 将其写入文件: (⊂img)⎕nput'a.pnm' 并使用或将其转换为更流行的格式给定矩阵,矩阵←4 4 ⍴ 1 0 1 0 每个RGB像素在基256:cb中编码为单个整数←
⎕WC
创建GUI对象,然后说明所需的位?我找不到任何示例,尽管有一些用于打开图片文件的示例
请提供一个使用APL表达式返回矩阵的示例
4 4 ⍴ 1 0 1 0
谢谢 一种方法是将矩阵格式化为: 将其写入文件:
(⊂img)⎕nput'a.pnm'
并使用或将其转换为更流行的格式给定矩阵,
矩阵←4 4 ⍴ 1 0 1 0
每个RGB像素在基256:cb中编码为单个整数← 矩阵×256⊥ 255
现在我们创建位图:'bm'⎕WC“位图”(“CBits”cb)
并创建相应PNG的内容:PNG← bm.MakePNG
让我们创建一个本机(即非APL)容器文件,并获取其绑定号:tn← '\tmp\pic.png'⎕n创建'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键脱机使用。哇-棒极了!谢谢你@Adám我感谢你的时间和努力。我本想问一下缩放的问题,但你抢先了我一步。
Show 100 Scale 3 3 ⍴ 1 0 1 1 1 0 0 0 0