推断图片格式

Linux/Unix下系统推断文件类型并不根据文件名称,也即不会根据文件后缀来推断文件的类型。从网上下载了一个图片,没有后缀,希望可以正确推断出格式。以便于共享到其它平台,该怎么办呢?

不同文件类型的文件头部信息不同,比較流行的图片的格式有jpg,png, gif等,以下列出jpg。png,gif文件头(16进制):

JPEG (jpg)。文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

有了文件头,推断文件就非常easy了.读取图片文件头部信息,之后进行比較就可以。

有非常多已有的编辑器能够直接读取文件的二进制信息。以下使用xxd进行二进制信息读取并推断:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#judge image file type

#推断是否仅仅有一个參数
if [ $# !1 ]
 then 
  echo "parameter error"
else
  ## 读取前3个字节与前4个字节相应的16进制
  len3=`xxd -p -l 3 $1`
  len4=`xxd -p -l 4 $1`
  if [ $len3 == "ffd8ff" ]
    then
      echo "The type is jpg" 
  elif [ $len4 == "89504e47" ]
    then
       echo "The type is png"
  elif [ $len4 == "47494638" ]
    then
       echo "The type is gif"
  else
       echo "The type is others"
   fi
fi

很多其它文章请前往小胖轩.

转载于:https://www.cnblogs.com/yfceshi/p/6867193.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器怎么设置域名,云服务器域名设置在哪里

可能不同的云服务厂商域名设置的方式略有不同,不过,大体来讲,方法应该都差不多的。下面我们以1.打开浏览器,搜索西部数码官网并登陆账号密码,到会员中心。2.进入管理中心后,在左侧的业务管理中找到3.点击服…

RHCE 学习笔记(9) 网络管理

n这一节本来按照教学大纲应该是学习SSH,不过SSH有很多网络相关的知识,因此老师把网络内容提前了一些。网络的基本知识例如IP,DNS,DHCP,路由协议等常识就不在此解释了。 RHEL查看网卡的相关信息很容易,ifcon…

leetcode 1207. 独一无二的出现次数(map+set)

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 示例 1: 输入:arr [1,2,2,1,1,3] 输出:true 解释:在该数组…

地图上绘制任意角度的椭圆_地图上的总椭圆

地图上绘制任意角度的椭圆或者,如何选择下班后去海滩的最佳方式 (Or, how to choose the best way to walk to the beach after work) It was a cool autumn evening when Hila Kloper and I were thinking of going to the beach after work. The beach is about 2…

【NOI2014】起床困难综合症 贪心

从高到低按位贪心&#xff0c;讨论一下初始0或1&#xff0c;分别暴力算出结果是什么 如果一开始0就能得1当然直接ans垒起来 如果1能得1而且当前m够用&#xff0c;那也垒起来&#xff0c;同时m减掉 否则gg 2min的代码 1 #include <bits/stdc.h>2 #define miaom(x,y) ((x &…

用原生js封装get方法

get方法的封装 首先我们看一下用原生js来发送请求的步骤: 1.创建请求对象 .var xhrnew XMLHttpRequest(); 2.创建open方法确认请求方式和地址 xhr.open(get,url) ps(记住get方法有参数的话在url后面用?符号连接再加上参数如:url?num3,多个参数用&符号连接); 3.监听事件…

10一个应用阻止关机贴吧_手机该不该每天关机一次?看完才知道这么多年白用了...

晚上习惯关机睡觉的朋友们在哪里&#xff1f;举起你们的手让小编看看&#xff01;那么问题来了&#xff0c;你为啥要关机睡觉&#xff1f;是担心手机“睡眠不足”&#xff0c;还是担心屏亮会让你忍不住的熬夜&#xff1f;然而&#xff0c;有朋友认为手机应该每天关机一次&#…

老王学linux-ftp

FTP&#xff1a;File TransferProtocol 21/tcp: 文件共享服务&#xff1a;应用层&#xff0c;ftp NFS:Network File System (RPC: Remote Procedure Call, 远程过程调用) Samba:CIFS/SMB FTP: tcp, 两个连接 命令连接&#xff0c;控制连接&#xff1a;21/tcp 数据连接: 主动模式…

leetcode 129. 求根到叶子节点数字之和(先序遍历)

给定一个二叉树&#xff0c;它的每个结点都存放一个 0-9 的数字&#xff0c;每条从根到叶子节点的路径都代表一个数字。例如&#xff0c;从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输…

fritz 使用手册_Fritz对象检测指南:使用机器学习在Android中构建宠物监控应用

fritz 使用手册by Eric Hsiao萧敬轩 Fritz对象检测指南&#xff1a;使用机器学习在Android中构建宠物监控应用 (A guide to Object Detection with Fritz: Build a pet monitoring app in Android with machine learning) Whether it is detecting plant damage for farmers, …

ajax无刷新评论的思路,ajax学习——ajax版无刷新评论(数据库)

//Comment.htm无刷新评论type"text/javascript">//加载评论$(function() {$.post("GetComment.ashx",function(data, status) {if (status ! "success") {$("#ulComment").append($("加载数据失败"));return;}var lines …

Numpy 新手教程(2)

翻译自官方文档Tentative NumPy Tutorial&#xff0c;有删节。 基本操作 主要的算术运算符都能够应用于数组类型&#xff0c;结果为相应元素之间的运&#xff0c;返回值为一个新的数组。 >>> a array( [20,30,40,50] ) >>> b arange( 4 ) >>> b a…

bl小说里面有个机器人管家_机器人也有攀登者,登顶珠峰的机器人来了!独造机器人管家...

机器人也有攀登者&#xff0c;登顶珠峰的机器人来了!2019年&#xff0c;是一个具有特殊纪念意义的年份!为庆祝祖国70华诞&#xff0c;各行各业纷纷献礼。9月30日&#xff0c;由吴京、章子怡、张译、井柏然、胡歌等知名演员主演的年度冒险电影——《攀登者》&#xff0c;将隆重上…

python 找出监听的端口号对号显示

刚好做运维平台&#xff0c;领导也有个要求是实时的查看&#xff0c;任意一台主机的端口开启状态&#xff0c;实际上我已经做了脚本发邮件每天diff的功能&#xff0c;但是为了方便展示还是写了这个脚本&#xff1a; 脚本内容&#xff1a; 123456789101112131415161718192021222…

2018年最新税收分类编码_2018年新编码器调查:31,000人告诉我们他们如何学习编码和获得开发人员工作

2018年最新税收分类编码More than 31,000 people responded to our 2018 New Coder Survey, granting researchers an unprecedented glimpse into how adults are learning to code.超过31,000人对我们的2018年《新编码器调查》做出了回应&#xff0c;使研究人员对成年人如何学…

彩虹系统怎么弄服务器,用云服务器彩虹挂机

用云服务器彩虹挂机 内容精选换一换当云服务器网络异常、防火墙未放行本地远程桌面端口、云服务器CPU负载过高等场景均可能导致云服务器无法正常登录。当您的云服务器无法远程登录时&#xff0c;我们建议您首先检查是否可以通过控制台远程登录。再参考排查思路检查登录异常的原…

leetcode 463. 岛屿的周长

给定一个包含 0 和 1 的二维网格地图&#xff0c;其中 1 表示陆地 0 表示水域。 网格中的格子水平和垂直方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完全包围&#xff0c;但其中恰好有一个岛屿&#xff08;或者说&#xff0c;一个或多个表示陆地的格子相…

欧拉路HDU3018

欧拉路&#xff0c;欧拉回路&#xff0c;讲的实际上就是一笔画的问题。 给定n个点&#xff0c;m条边&#xff0c;如果能一笔把所有边都连上就是欧拉路&#xff0c;如果起点和终点是同一点&#xff0c;就是欧拉回路。 欧拉路的特征&#xff1a;对于无向图&#xff0c;如果所有点…

NeuCF源码中用到的模块(函数)

论文&#xff1a;《Neural Collaborative Filtering》源码中用到的模块&#xff08;函数&#xff09; from keras.layers import Embedding, Input, Dense, merge, Reshape, Merge, Flatten &#xff08;1&#xff09;Input&#xff08;&#xff09;&#xff1a;用于实例化 Ker…

awt jtable 多线程加载图片_Java项目实战之天天酷跑(三):缓冲加载游戏界面

前文&#xff0c;我们完成了开始游戏界面的搭建。本文将实现缓冲加载界面的搭建。并搭建与前面俩界面间的桥梁。实现输入正确用户名密码后&#xff0c;进入开始游戏界面&#xff0c;点击开始游戏按钮后&#xff0c;进入缓冲加载界面的功能。界面示意图&#xff1a;具体要求&…