Apng文件判断

背景:在图片压缩中,根据文件头判断png和jpg文件进行了压缩,但是对apng文件,文件头的前14个字节都一样(89504E470D0A1A0A0000000D4948),导致对apng图片进行压缩,图片白了

解决方法:进一步根据acTL和IHDR判断文件是apng还是png,代码如下:

    private boolean isApng(File file) {
        byte[] buffer = new byte[8];
        try (FileInputStream inputStream = new FileInputStream(file)) {
            inputStream.read(buffer, 0, 8);
            while (true) {
                // Read the chunk length
                int length = readInt(inputStream);
                // Read the chunk type
                inputStream.read(buffer, 0, 4);
                String chunkType = new String(buffer, 0, 4, "UTF-8");
                if (chunkType.equals("acTL") && length == 8) {
                    return true;
                } else {
                    // Skip the chunk data and CRC
                    inputStream.skip(length + 4);
                }
                // Check for the end of the file
                if (inputStream.available() == 0) {
                    break;
                }
            }
            return false;
        } catch (IOException e) {
            return false;
        }
    }

    private int readInt(InputStream inputStream) throws IOException {
        byte[] buffer = new byte[4];
        inputStream.read(buffer, 0, 4);
        return ((buffer[0] & 0xFF) << 24) | ((buffer[1] & 0xFF) << 16) | ((buffer[2] & 0xFF) << 8) | (buffer[3] & 0xFF);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776196.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux shell编程学习笔记62: top命令 linux下的任务管理器

0 前言 top命令是Unix 和 Linux下常用的性能分析工具&#xff0c;提供了一个动态的、交互式的实时视图&#xff0c;显示系统的整体性能信息&#xff0c;以及正在运行的进程的相关信息&#xff0c;包括各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。 1 top命令…

Ethread结构体介绍(未完待更新)

1.StartAddress 和Win32StartAddress介绍 总结: StartAddress 总是 ntdll!RtlUserThreadStart(在win7下的3环线程) Win32StartAddress 等于 imagebaseentrypoint(基址 程序入口点)

215. 数组中的第K个最大元素(中等)

215. 数组中的第K个最大元素 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;215. 数组中的第K个最大元素 2.详细题解 快速排序算法在每一轮排序中&#xff0c;随机选择一个数字 x x x&#xff0c;根据与 x x x的大小关系将要排序的数…

(自适应手机端)保健品健康产品网站模板下载

(自适应手机端)保健品健康产品网站模板下载PbootCMS内核开发的网站模板&#xff0c;该模板适用于装修公司网站、装潢公司网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b;自适应手机端&#xff0c;同一个后台&#xff0…

01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型

01–SpringAI接入大模型,chatgpt,Java接入人工智能大模型 文章目录 01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型一、准备工作&#xff1f;①&#xff1a;环境准备 二、创建一个springAI项目①&#xff1a;创建一个根项目②&#xff1a;创建一个SpringAI模块01.解决…

鸿蒙笔记导航栏,路由,还有axios

1.导航组件 导航栏位置可以调整&#xff0c;导航栏位置 Entry Component struct t1 {build() {Tabs(){TabContent() {Text(qwer)}.tabBar("首页")TabContent() {Text(发现内容)}.tabBar(发现)TabContent() {Text(我的内容)}.tabBar("我的")}// 做平板适配…

数据驱动制造业升级,免费可视化工具成关键

制造业作为国民经济的支柱产业&#xff0c;正经历着前所未有的变革。数据&#xff0c;作为这场变革的核心驱动力&#xff0c;其重要性不言而喻。然而&#xff0c;面对海量且复杂的数据&#xff0c;如何高效、直观地将其转化为有价值的洞察&#xff0c;成为了众多制造企业亟待解…

去中心化技术对云计算的潜在影响与应用

随着去中心化技术如区块链的发展&#xff0c;云计算领域也面临着新的变革与挑战。本文将深入探讨去中心化技术对云计算的潜在影响及其应用前景&#xff0c;从技术基础到实际案例&#xff0c;逐步揭示这一新兴领域的发展趋势与可能带来的革新。 1. 介绍&#xff1a;云计算的现状…

一个pdf分割成多个pdf,一个pdf分成多个pdf

在数字化办公和学习中&#xff0c;pdf格式因其良好的兼容性和稳定性而受到广泛欢迎。但有时候&#xff0c;我们可能需要将一个大的pdf文件分割成多个小文件&#xff0c;以便于分享、打印或编辑。今天&#xff0c;我就来教大家几种简单有效的方法&#xff0c;让你轻松实现pdf文件…

PHP源码:美容护理按摩预约系统(附管理端+前台)

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;预约系统 源码&#xff0c;支持二开&#xff0c;无加密。项目的内容可以是美容护理&#xff0c;按摩护理等&#xff0c;你也可以扩展。 预约下单大致流程&#xff1a; 客户登录下预约单&#xff0c…

亿发:信息化建设or面子工程?究竟什么才是真正的信息化解决方案

在现代企业的竞争中&#xff0c;信息化建设扮演着越来越重要的角色。信息化技术不仅是企业提升管理效率、优化运营模式的利器&#xff0c;更是企业在市场竞争中脱颖而出的关键。然而&#xff0c;许多企业在推进信息化的过程中&#xff0c;往往容易陷入“面子工程”的误区。那么…

echarts图表加载显示空白

数据请求了&#xff0c;图表加载显示空白 报错&#xff1a; Error: Initialize failed: invalid dom. at Object.init (echarts.js:2273:1) 方案 1. 通过this.$nexttick(()>{}) , 试过&#xff0c; 还是不行 2、把 this.lineChart2 this.$echarts.init(document.g…

关于汽车软件测试的几点想法

如果你有过汽车行业的从业经验&#xff0c;你就应该知道&#xff0c;过去汽车行业只做测试&#xff0c;而不做开发。汽车制造商的主要任务&#xff08;从工程角度看&#xff09;是将来自数百家供应商的数千个零部件组装在一起。考虑到现代软件的复杂性和客户的“挑剔”&#xf…

【JavaWeb程序设计】Web基础-JavaScript

目录 一、函数与事件的使用 1. 编写一个html页面&#xff0c;使用Javascript完成数字的平方计算。 1.1 运行截图 1.2 JS代码 1.3 HTML代码 2. 要求文本框中只能输入字母 2.1 运行截图 2.2 下载jquery-3.4.1并引用 2.3 JS代码 2.4 HTML代码 3. 在文本框分别输入两个…

pytest-rerunfailures:优化测试稳定性的失败重试工具

笔者在执行自动化测试用例时&#xff0c;会发现有时候用例失败并非代码问题&#xff0c;而是由于服务正在发版&#xff0c;导致请求失败&#xff0c;从而降低了自动化用例的稳定性&#xff0c;最后还要花时间定位到底是自身case的原因还是业务逻辑问题&#xff0c;还是其他原因…

SKM Power*Tools 10.0

SKM Power*Tools 10.0是功能强大的电气电力系统分析设计解决方案&#xff01;综合软件提供强大的功能和领先的技术&#xff0c;在检查、计算、负载分配、流量、瞬态稳定性等多个方面提供领先的支持&#xff0c;可对不同的安全设备、系统进行评估分析和比较&#xff0c;使用 Pow…

《安全行业大模型技术应用态势发展报告(2024)》

人工智能技术快速迭代发展&#xff0c;大模型应用场景不断拓展&#xff0c;随着安全行业对人工智能技术的应用程度日益加深&#xff0c;大模型在网络安全领域的应用潜力和挑战逐渐显现。安全行业大模型技术的应用实践不断涌现&#xff0c;其在威胁检测、风险评估和安全运营等方…

解决Vue3中路由页面跳转出现白屏,刷新页面之后展示正常的问题

遇到这个问题&#xff0c;首先需要检查根组件标签最外层是否包含了个最大的div盒子来包裹内容。如下图所示&#xff1a; 我的项目就是因为没有将两块内容放到一个大盒子里面&#xff0c;所以才会出现白屏的问题。然后我去查了相关的资料&#xff0c;了解到这个问题是Vue组件渲染…

improved-diffusion-main代码理解

目录 一、 TimestepEmbedSequential二、PyTorch之Checkpoint机制三、AttentionBlock四、use_scale_shift_norm 和nanoDiffusion-main相比&#xff0c;improved-diffusion-main代码是相似的&#xff0c;但有几个不是很好理解的地方记录一下。 一、 TimestepEmbedSequential 代码…

中国动物志(140卷)

中国动物志&#xff0c;共140卷&#xff0c;包括昆虫纲、鸟纲、兽纲、无脊椎动物、硬骨鱼纲等多类&#xff0c;是反映我国动物分类区系研究工作成果的系列专著&#xff0c;是研究物种多样性、探讨物种演化和系统发育的重要参考&#xff0c;是动物资源开发利用、有害物种控制、濒…