在 aardio 中显示图片
目录显示图片的控件
在 aardio 中我们显示图片也有对应的控件,这个空间就是高级 plus
注意请不要使用旁边的普通图像控件,因为右边的高级图像控件实质上就是左边的上位替代,这个以后我会单独新开一期教程讲讲 aardio 中的界面控件,但是现在不是时间,这个视频主要还是围绕 python 与 aardio 之间的强联动
我们点开他们,然后这个 plus 有一个属性叫 background
通过这个我们就可以很方便的修改图片上去了,但是这个输入的图片有比较苛刻的要求,这个图片不能是一个路径,而必须是字节数组 byte,如果对这个没有了解的同学我可以给大家做一个简单的介绍
字节数组就是我们常说的二进制序列,你可以理解为很多 0和1,然后计算器上任何资源都由这些0 和 1组成,我们在数据传输的时候也会使用字节数组进行传输,而不是直接传输一个字符串,详情可以见《计算机网络结构》
使用 IO 库
大家平时都经常再用的 with open 其实就是 io 库,io 库就是用来操作文件的库, 但是这里面有两个比较特殊的,这两个不是向磁盘写入数据,而是向内存写入数据,这样的方式适合我们短时间就释放的资源,这两个指令分别是 StringIO
和 BytesIO
当然我们不会两个都讲,我们这里只讲 BytesIO
这个方法可以让我们将一个文件读取到内存中,然后我们就可以像从磁盘打开文件一样正常打开它,但是好处是我们使用之后这个存在内存里面的文件就会消失
我们直接开始一个演示,首先需要准备好一张图片
然后我们开始先在 python 里面写代码,目标是读取到这张图片的比特信息
import io
def get_img():
# 使用 with 方法打开,注意这里使用的 rb
with open("./1.jpg",'rb') as f:
# 创建一个 BytesIO 方法
img = io.BytesIO()
# 将文件内容写入到 BytesIO 中
img.write(f.read())
# 使用 getvalue 方法获取到值
print(img.getvalue())
return img.getvalue()
这样我们就获取到了我们的二进制内容
在 aardio 中使用 plus
然后我们再前往 aardio 中进行修改,想要修改背景图可以通过两个办法 setBackground
和普通的 background
,区别在于第一个可以传入一个参数,询问是否提前缓存图片
注意这里需要使用 parseValue()
如果不使用就没有办法正常出图
py3.exec(code);
var img = py3.main.get_img()
//mainForm.plus.setBackground(img.parseValue(),false) 两种方法都可以
mainForm.plus.background = img.parseValue();
可以看到我们的图片正常输出在我们的界面上了
但是我们现在的图像有点扭曲,我们可以通过背景模式进行修改
更多参数可以在这里调节