当前位置: 首页 > news >正文

做网站没有数据商城网站建设 上海

做网站没有数据,商城网站建设 上海,太原网络推广公司,万网主机怎么做网站前言 本文是在rust的GUI库iced中在窗口显示动态图片GIF格式图片的一种方法。 环境配置 系统:window 平台:visual studio code 语言:rust 库:iced、image 概述 在iced中,提供了image部件,从理论上说&…

前言
本文是在rust的GUI库iced中在窗口显示动态图片GIF格式图片的一种方法。

环境配置
系统:window
平台:visual studio code
语言:rust
库:iced、image

概述

在iced中,提供了image部件,从理论上说,image是支持gif图片的,但是如果你直接将gif的图片路径提供给image,获取图片的handle数据,然后在UI上显示这个image,是无法显示动态图片的,通常,这种情况下,只会显示gif图片的第一帧。

看下面的示例:
在这里插入图片描述
上面这张gif图片,如果直接使用下面的显示方式:

let imghandle=image::Handle::from_path(&self.imgfile); let img1=image(imghandle).content_fit(iced::ContentFit::Contain);

效果如下:
在这里插入图片描述
如上图的左边,image部件只会显示这个gif的第一帧。而右边的图片则是动态的,下面我就来说一下让gif动态显示的方法。

事实上,这个方法是一种间接的方法,iced库的作者提供了一个方法,即使用Subscription来订阅window::frame事件:

let sub_f=iced::window::frames().map(Message::Tick);

这个事件会根据当前系统硬件来刷新,它触发的就是窗口的重绘。
它返回的数据是Instant,是iced中的time的时刻数据,即当前的时间片。

所以,我们根据这个实时刷新的机制,就可以来显示动态的图形,包括gif。
具体逻辑是这样的,先使用image库来获取gif图片的底层数据:

let gf=std::io::BufReader::new(std::fs::File::open("..\\pidpid\\imgout\\pidpid.gif").unwrap()); let mut g1=eximg::codecs::gif::GifDecoder::new(gf).unwrap();let g2=g1.into_frames().collect_frames().expect("msg");

如上,g2是gif图片的数据集合,其类型是Vec< Frame>,Frame即gif的每一帧图片。
我们通过索引来获取g2中的每一帧Frame,然后将Frame转为Vec< u8>格式,即图片转为字节数组格式。

这样一来,我们就可以使用iced中的image部件的from_pixels函数,来通过字节数组显示图片:

let imghandle2=image::Handle::from_pixels(200, 200, self.pixpix.clone()); let img2=image(imghandle2).content_fit(iced::ContentFit::Contain);

这样,我们就通过将gif图片分割,然后将每一帧单独显示到image部件,再通过订阅window::frame来修改gif数据组的索引,以此来显示gif的不同帧:

  let gf=std::io::BufReader::new(std::fs::File::open("..\\pidpid\\imgout\\pidpid.gif").unwrap());    let mut g1=eximg::codecs::gif::GifDecoder::new(gf).unwrap();let g2=g1.into_frames().collect_frames().expect("msg");if self.pixnum >7{self.pixnum=0;}self.pixpix=g2[self.pixnum].buffer().to_vec();self.pixnum +=1;

这就是间接实现iced中显示动态gif图片的一种方法,看下实际演示:
在这里插入图片描述

http://www.yayakq.cn/news/84002/

相关文章:

  • 滨州做微商城网站广东阳江房产网
  • 建站仅向商家提供技术服务网店代运营收费多少钱
  • 郴州网站建设公司电话wordpress pdf 免费下载
  • 大连宏帝建设网站wordpress退出代码
  • 成都APP 微网站开发东莞有哪些公司
  • 网站开发外包一个wordpress noindex
  • 建设银行个人网站个人客户python设计模式
  • 县区网站建设运行汇报建设网站的报告
  • 烟台牟平住房建设局网站三桥网站建设
  • 网站并发要求湖南长沙公司有哪些
  • 手机网站北京网站建设信息科技公司
  • 网站设计师需要学什么wordpress心情插件
  • 建立网站的信息集成过程江苏省建设厅网站查询
  • 网站建设项目采购合同建设一个购物网站需要多少钱
  • 网站建设的系统分析信阳有什么推广平台
  • 建行网站会员有什么用敬请期待英文怎么写
  • 站长之家alexa排名东莞合一网络科技有限公司
  • 如何做公司网站的武清网站开发tjniu
  • 寮步网站制作做程序开发的网站
  • 网站外链怎么看和君设计专业网站建设公司
  • 爱给网素材官网app网站做优化必须要ftp吗
  • 网站建设需要公司网站接入银联支付怎么做
  • 十大免费数据网站网站什么情况要更新
  • 做网站建设有哪些公司河南省建筑业协会
  • vps做网站需要做哪些准备广西网站建设公司电话
  • 全球电子商务网站2023百度秒收录技术
  • 汽车信息网站设计论文网站设计如何开始
  • 外贸网站需要备案吗房产中介网站
  • 长春网站制作计划昆明建设网站公司
  • 深圳的seo网站排名优化《基层建设》在哪个网站收录的