Matrix APL编程-如何将简单的矩阵转换为图片?

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中编码为单个整数←

我是APL的新手,我想把一个4x4的二进制矩阵转换成一个由黑白方块组成的图像——诸如此类的东西。文档说明可以使用
⎕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