判断图片格式

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

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

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

有了文件头,判断文件就很容易了.读取图片文件头部信息,之后进行比较即可。有很多已有的编辑器可以直接读取文件的二进制信息,下面使用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

更多文章请前往小胖轩.

时间: 2024-08-11 19:46:04

判断图片格式的相关文章

PHP判断图片格式的7种方法

以图片 $imgurl = "http://www.php10086.com/wp-content/themes/inove/img/readers.gif"; 为例: 思路1. 把图片名当做字符串来处理,那么判断图片格式的也就是变成了查找“.”号的字符串. 方法一:strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符. echo $ext = strrchr($imgurl,'.'); 输出: .gif 方法二:strrpos()

java 代码判断图片格式后缀名称

/** * 图片判断 */ private static String getFormatName(Object o) { try { // Create an image input stream on the image ImageInputStream iis = ImageIO.createImageInputStream(o); // Find all image readers that recognize the image format Iterator<ImageReader>

javascript判断图片格式

判断图片格式是否正确,可以在前台页面进行判断,也可以在上传的时候进行判断,一下方法是利用javascript在前台页面进行判断: 1.获取图片名称 //从路径中截取图片名[包括后缀名] var path=img.src; 2.获取图片名称(格式)有两种方法获取 (1).获取图片名称(截取方法获得) var filename; if(path.indexOf("/")>0)//如果包含有"/"号 从最后一个"/"号+1的位置开始截取字符串 {

根据文件头判断图片格式

测试代码 byte[] imgb; using (FileStream fs = new FileStream(@"D:\favicon.ico", FileMode.Open)) { imgb = new byte[fs.Length]; fs.Read(imgb, 0, (int)fs.Length); } string imgtype = imgb.GetImageType(); 扩展方法实现 public static string GetImageType(this byte

php 判断图片类型

脚本之家 <?php $imgurl = "http://www.jb51.net/images/logo.gif"; //方法1 echo $ext = strrchr($imgurl,'.'); echo '<hr>'; //方法2 echo $ext1 = substr($imgurl,strrpos($imgurl, '.')); echo '<hr>'; //方法3 echo(@end(explode(".",$imgurl)

判断邮箱格式和图片压缩

1.判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex [email protected]"[A-Z0-9a-z._%+-][email protected][A-Za- z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",e

Windows C++ 判断文件是否是图片格式的方法。

一.通过后缀名去判断. bool IsImageByTail(const std::wstring &path) { std::wstring file_exten; size_t pos = path.rfind(L'.'); if (pos == std::wstring::npos) return false; file_exten = path.substr(pos, std::wstring::npos); //把file_exten转小写 for (size_t u = 0; u &l

Python 批量修改图片格式和尺寸

公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图片的输入路径和输出路径,而且每次都只能处理一个文件夹,很繁琐,于是我想到了万能的Python,然后写了一个脚本来批量处理图片,同一个根目录下的所有文件夹的子文件等的图片全部会处理掉. 代码中还加入了很多的异常捕获机制和提示,希望对大家有帮助. 备注: 1.导入了PIL库,是处理图片用的,很强大: 2

前端开发中常用的几种图片格式及其使用规范

在介绍图片格式之前,首先说一些额外的东西. 矢量图与位图. 矢量图是通过组成图形的一些基本元素,如点.线.面,边框,填充色等信息通过计算的方式来显示图形的.一般来说矢量图表示的是几何图形,文件相对较小,并且放大缩小不会失真. 这里有一点要注意的是web开发中用到的图片都不是矢量图,即使是一个三角形,只有一个边框,都是位图. 那么矢量图在哪里有用到呢? 我目前的知识池就知道一个图标字体,比如 font-awesome 目前在前端的开发中常用的图片格式有三种:jpg,png,gif.这些都是位图.