首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

duilib支持apng,gif支持文字、背景、图片的filesourcedestxtiledytiledmask等

duilib官方库提供了个gif控件,用的是gdi+解析和绘制的,同时没有接入duilib控件本身的背景色,文本等绘制,包括图片的source/dest/xtiled/ytiled/mask等属性也都没有做支持...可以满足基本的使用需求。 我需要一些效果比较好的动态图来做展示,gif显然不行,另外的动图就是webP和Apng,最决定先支持apng,webP后续有需求的话,再研究支持。...2.gif控件移除掉gdi+的解析和绘制,改为duilib自带的stbimage去解析,生成每一帧的HBITMAP,在PaintImage时去绘制对应的帧,这样就融入了duilib的DoPaint体系,...APNG控件: 1.apng控件重做,之前一版是基于libpng库的,新的代码直接移除了Libpng库,找了份支持apng的stbimage代码来解析。...2.在apng控件中完全重写了帧的解析处理,主要是参考libpng的例子。与gif一样,生成每一帧的HBITMAP(这个是已经处理过的完整的帧位图,不是apng里面直接解析出来还需要二次处理的帧)。

1.2K20

使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)

使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇) OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。...Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } 拿出我们关心的 outline 的属性来解析,于是有...为了尽可能简化此博客的代码,参数我直接使用了 XElement 类型,以便在方法中使用 XPath 语法来解析。(当然,如果你是做库或者进行大型可维护项目的开发,这里就需要一些抽象了。)...这里,所有的 XML 解析均使用的是 XPath 语法,关于 XPath 语法,可以阅读 XML 的 XPath 语法 - walterlv,关于如何使用 XPath 在 .NET 中读写 XML 文件...使用此 OPML 模型 当你把这些类都准备好,那么你就可以使用简单的几句话来完成 OPML 文档的解析了。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全面掌握移动端主流图片格式的特点、性能、调优等

    看看你手机里的 App:微博、微信、QQ、淘宝、网易新闻等等,每个 App 里都有 WebP 的身影。Facebook 则更进一步,用 WebP 来显示聊天界面的贴纸动画。...BPG 使用 HEVC (即 H.265) 帧内编码作为其算法基础,就这点而言,它毋庸置疑是当下最为先进的图片压缩格式。...两个平台在导入第三方编解码库时,都多少对他们进行了一些修改,比如 Android 对 libjpeg 等进行的调整以更好的控制内存,iOS 对 libpng 进行了修改以支持 APNG,并增加了多线程编解码的特性...6.2 PNG 相对于 JPEG 来说,PNG 标准更为清晰和简单,因此有很多公司或个人都有自己的 PNG 编码解码实现。但目前使用最广的还是 PNG 官方发布的 libpng 库。...7.2 APNG APNG 目前并没有被 PNG 官方所接受,所以 libpng 并不能直接解码 APNG。

    1.9K31

    使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)

    ---- 本文分为两个部分,一个是理解 OPML 格式,一个是解析此格式: 概念篇(本文) 解析篇 OPML 格式 RSS 订阅你应该并不陌生,你可以在我的博客上方看到 RSS 的订阅源按钮,也可以在各大博客站点发现这样的订阅按钮...这么古老的格式也不妨碍它依然成为订阅源交换的标准格式。不过我们这篇文章不会去谈历史,我们只谈它的格式以及使用。...也就是说,如果我们使用 OPML 储存 RSS 订阅列表,那么可以存为树状结构。在前面的例子中,我把自己的 RSS 订阅独立开来,把朋友和微软的 RSS 订阅分成了单独的组。...还有一些可选属性: description htmlUrl language title version OPML 的解析 在了解了 OPML 的格式组成之后,便可以很容易的地解析此文件了。...当然,我也写了一份 OPML 的解析,请参阅本文的第二部分,解析篇。

    4.9K20

    推荐一个好用的图片压缩网站!清晰度不变的同时体积减小一大半

    ,那么这时候你可能会有这么一个需求: “有没有什么办法在保证图片清晰度的时候把图片的体积压缩到最小?...” 大家通常会用什么办法呢? 我的话其实用的比较多的办法就是使用 PS,然后另存为 Web 所用格式,但用到这个功能我还得额外装个 PS,感觉比较麻烦。...背后技术 看简介可以了解到,TinyPNG 这个网站使用了有损压缩技术来减小 WebP、PNG、JPEG 格式图片的文件大小,它通过有选择地减少图像中的颜色数量来达到压缩效果,同时由于咱们人眼对这种细微颜色变化感知比较弱...所以这种图很适合在网站开发的时候使用,所以你可以看到一些网站的 Logo、Banner 图都是 PNG-8 类型的图片。...不知道大家有没有听说过一种 PNG 图片格式,叫做 APNG,其实就是 Animated PNG,就是可以动的 PNG 图片,比如这张图片:https://ezgif.com/images/apng.png

    1.5K20

    浏览器缓存机制

    /apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language...1.16.1 同一张图片第二次请求 第二次请求头 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng...如果该图片最新的Etag值和If-None-Match的值不匹配则重新请求。...而第二次的响应信息为304 未修改 意味着浏览器要从本地取缓存,节省了图片在网络上的请求时间 这是就是浏览器的缓存机制 当我们第一次请求某图片时正常下载图片,返回状态码为200,基于一个前提是图片不会经常变动...,服务器在返回200的同时还会返回该图片的”签名(Etag)“ 当浏览器再次访问该图片时,会去服务器校验Etag,如果图片没有发生变化返回状态码304,浏览器直接使用缓存中的图片,从而减轻服务器压力。

    47710

    leetcode-219-Contains Duplicate II(使用set来判断长度为k+1的闭区间中有没有重复元素)

    最简单最暴力的方法当然是双重循环,设定窗口长度为k+1,从nums的第一位开始,判断窗口内有没有跟首元素相同的元素。...接着窗口不断往后挪,去掉第一个元素,增加一个新的元素,判断窗口的首元素,也就是这时候nums的第二个元素,有没有在窗口内出现重复元素。...这种做法时间复杂度O(n^2) 我们也可以仍然往后挪窗口,只不过使用set,用哈希的方法来判断窗口中有没有重复元素,这种判断比起上述暴力方法快了许多。...set来存储,初始化其中有k+1个元素 if(set1.size()!...=k+1)//用set的size来判断 return true; } return false; } 上述代码实测

    58620

    动画菜鸡的自我救赎之企鹅辅导品牌页开发总结

    接下来主要介绍无法用单纯css实现的动画如何实现: Gif/Apng: 对于没有办法用css实现的动画,可以让设计同学导出gif或者apng,也就是动图。...最后,还有一个问题是,使用动图可能动图大小会比较大。 video 动画效果也可以通过视频来实现,采用视频的方式,甚至还能调节动画播放的进度,不像动图一样只能自动播放。...lottie-web库会去解析json文件的内容,根据json文件里面的动画信息,用svg或者canvas的方式去实现动画。...这个动画使用js + css来实现即可。大家可能会觉得这个动画简单,我一开始也是这么想的,但是具体实现起来就会觉得其实还是有一点难度的。...这里主要是要看到小男孩的动画,以及轴动画。 一开始我看到这个小男孩动画的时候,我想的是用lottie来实现。但是使用了lottie之后,发现效果与实际效果差别很大。

    1.8K41

    Nexus5 bootloader内容初探及延伸思考编译使用

    在Android启动过程分析-从按下电源键到第一个用户进程[转载]中,我们知道BootLoader是在操作系统前执行的程序,有没有很好奇它到底有些啥内容呢?...那么,有没有想过,我们刷机的刷的img保存在手机的什么位置呢?...于是,一些之前没想明白的地方现在想通了。 为什么需要使用fastboot来刷img?...我们知道使用fastboot时,手机需要进入bootloader模式,此时手机还没有没有加载kernel,权限还是最高权限,通过usb传递的数据,被手机接收后,可以写入到/dev/block下(看一下前面这个目录的权限...可以不用fastboot来刷img么? 既然我们知道了刷机刷到手机的哪个位置,那自然是可以不用fastboot来刷机的,当然,为了写入/dev/block,我们需要root权限。

    48430

    threejs 贴图动画总结

    如下图所示: 雪碧图动画(Sprite Sheet) 图集也就是常说的雪碧图,就是把一系列小图按照一定的布局放到一张大图上面。 在使用的时候,截取大图的一部分来获取某个小图。...要自动播放gif动画,需要使用解析gif的库,把gif图片的每一帧解析出来, 并把每一帧图像绘制到一个canvas上,把canvas作为贴图对象的图片。大致代码如下: 加载gif图片,并解析图片。...其中解析图片用到了一个库omggif,利用里面的GifReader可以解析gif图片的帧数据: import { GifReader } from 'omggif'; const loader =...APNG可以设置半透明,边缘锯齿不严重,所以使用APNG的图片的效果要优于gif图片。 原理上类似,也是解析APNG图片,然后把没一帧一次绘制到canvas上,并不断更新texture对象。...解析APNG图片,使用了一个开源库,APNG-canvas。 有兴趣读者可以自行研究,此处不重点讲述。 解析完成后,可以把解析的帧集合进行绘制,代码如下: draw() { if (!

    2.7K20

    一道图片隐写题引发的思考

    用简单的话来概括上面的内容,APNG就是一种动图形式(可以动)的PNG文件,和GIF文件类似。...png来查看,并且只会显示动图的第一帧,所以我们直接查看本题的图片无法看到flag,因为含有flag的图片并不是第一帧 只从表面来看,我们无法直接看出apng与png到底有什么差别,所以我们来看一看两种文件的组成...,分别为:acTL(动画数据块)、fcTL(帧控制块)、fdAT(帧数据块),下图是三个独立的png文件组成apng的示意图 acTL 块必须在第一个 IDAT 块之前,用于告诉解析器这是一个动画 PNG...结合本题所给的图,用010editor来查看几个关键字,可以分别在4Bh、530Ah两个位置找到fcTL,在5330h、D340h两个位置找到fdAT,用TweakPNG查看也可以清晰地看到 和上面png...,应该不会被识别到,我使用工具将本题的apng转换成了gif,得到的gif只有两帧,也证明了我刚提到的观点(大概2333) 总结 一道看似简单的隐写题引出了如此大的学问,要不是这道题,我可能到很久之后还不会了解到有

    45610

    在Android中显示APNG动图

    APNG(Animated Portable Network Graphics)是一个基于PNG(Portable Network Graphics)的位图动画格式,用途类似GIF,其诞生的目的是为了替代老旧的...总结下来有以下几点: (1)GIF最多支持 8 位 256 色,而APNG支持24 位真彩色和alpha通道,不会出现像GIF的锯齿; (2)APNG图通过优化,图片大小和GIF差不多,甚至小一点。...三、在Android中显示APNG动图 这里使用了一个开源库来解析加载APNG图,apng-view 使用示例: String url = "http://xxx.png"; imageView.setOnClickListener...} } } 这个过程大体上就是在解析这个APNG文件的基本信息。...= null) apngListener.onAnimationEnd(this); } } (5)draw 动图播放的核心方法之二draw; APNG图是怎么给绘制出来的呢?

    17K20

    百问FB显示开发图像处理 - PNG图像处理

    2.3 PNG图像处理 2.3.1 PNG文件格式和libpng编译 ​ 跟JPEG文件格式一样,PNG也是一种使用了算法压缩后的图像格式,与JPEG不同,PNG使用从LZ77派生的无损数据压缩算法。...libpng库可从官网上下载最新的源代码: http://www.libpng.org/pub/png/libpng.html 在使用libpng之前,我们先要交叉编译libpng的库文件和头文件并存到开发板的文件系统中.../nfs_root/fs_mini_mdev_new/lib/ -d 2.3.2 libpng接口函数的解析和使用 libpng的使用方法可以参考解压包中的使用说明libpng-manual.txt和例程...libjpeg的使用步骤简单总结如下: 分配和初始化两个与libpng相关的结构体png_ptr,info_ptr A. png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING...至于转化为什么格式,由参数png_transforms决定,它是一个整型参数,可以使用libpng库中定义的宏进行传参。这个参数相关的宏有很多,具体的可以参考库中的相关文件的解析。

    13310

    Linux应用开发【第二章】图像处理应用开发

    libpng编译 2.3.2 libpng接口函数的解析和使用 2.3.3 使用libpng把png文件转为rgb格式,在LCD上显示 2.4 图像调整 2.4.1 图像的缩放 2.4.1.1 图像缩放算法浅析...,每一个图像文件,都可以通过解析文件中的每一组二进制数的含义来获得文件中的各种信息,如图像高度,宽度,像素位数等等。...我们可以使用libjpeg库来对jpeg文件进行格式的解析和转换。libjpeg支持X86,ARM等架构。libjpeg是开源工具,所以可以在网上免费下载。 ​.../nfs_root/fs_mini_mdev_new/lib/ -d 2.3.2 libpng接口函数的解析和使用 libpng的使用方法可以参考解压包中的使用说明libpng-manual.txt和例程...至于转化为什么格式,由参数png_transforms决定,它是一个整型参数,可以使用libpng库中定义的宏进行传参。这个参数相关的宏有很多,具体的可以参考库中的相关文件的解析。

    1.1K20

    xmake v2.6.3 发布,支持 vcpkg 清单模式

    我们能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。...") add_packages("vcpkg::zlib", "vcpkg::fmt", "vcpkg::libpng") 但是,vcpkg 的版本选择限制还是不少,必须要硬编码指定 baseline...这允许使用 CMake 来构建您的项目,同时使用 Xrepo 来管理依赖包。这个项目的部分灵感来自 cmake-conan。...调用 xrepo_package(foo) 后,有两种使用 foo 包的方法: 如果提供 cmake 模块来查找它,则调用 find_package(foo), 参考 CMake `find_package...我们不用自己编写 pac.lua,就可以直接使用它来加速 github 源的下载。

    1.5K30

    2行代码实现修改代码后自动重载

    有没有办法做到修改了项目使用的源码文件后,让程序自动重新运行?...肯定有办法,三方库 watchdog 可以监控文件的新增,删除,和修改,可以在这些事件发生后执行相应的动作,但它不够完美: 可以对某一路径进行监听,但不能解析项目 import 了哪些文件,import...2、autoreload 为我所用 好在 django.utils.autoreload 和 django 其他模块是松耦合的,不需要修改代码即可可以直接移植到其他项目使用。...做法很简单,只需要将 Django 库中 utils 目录下的 autoreload.py 文件复制到自己项目的路径下,再导入使用即可。...修改 test.py test2.py 的任何地方,程序都会重新运行,非常便于调试。如果只保存,未修改任何内容,则程序不会重新运行,非常智能。

    2.1K30

    秒开率达90%:腾讯看点客户端 GIF 转视频优化方案

    那么,在 GIF 占比如此高的今天,有没有一些更合适的动图格式,既能减小文件体积和服务器带宽,又能在客户端有不俗的性能表现?...从客户端的角度,如果仅仅是为了减少用户等待动图加载的时间,其实可以使用一些常规的手法,比如预加载等,但是为了节省网络带宽,我们可以直接替换成另一种动图格式来进行优化。...动图技术方案 当前的动图技术除了 GIF 外,常用的技术方案有以下几种: APNG APNG(Animated Portable Network Graphics)是一种基于 PNG 的拓展动图格式,不同于...GIF 只有 1 位透明通道,APNG 动图格式支持 8 位透明通道,所以 APNG 动图会有更好的质量。...GIF),使用视频替代 GIF 是一个不错的选择。

    3.8K40
    领券