这里不讨论通过文件后缀名的判断方式,因为可以很容易的手动修改后缀名。
这里讨论如何通过文件的二进制流来判断一张图片是否为jpg格式的图片。对图像图像不太了解,请教了一位图像方向的同事后,大致了解了一些,这里写出来,作为笔记和分享。
原理很简单:所有JPG/JPEG格式的图片都是以十六进制的'FF D8'作为文件开始,'FF D9'作为文件结束标志。FF等为16进制数据,占文件的1 byte。如果没有带相机信息的jpg图片,第7, 8, 9, 10这4位上分别是字符'JFIF'的16进制表示,用UltraEdit打开可以直接看到;如果带有相机信息,有可能与不带信息的不同,也可能相同,不同的话在那4位上为'Exif'字符的16进制表示,但是他们都是以FF D8开始,FF D9结束。
原理清楚后,直接代码:
InputStream bin = new FileInputStream("C:/Users/wuyao/Desktop/sisu.jpg"); // a jpg file
int b[] = new int[4];
b[0] = bin.read();
b[1] = bin.read();
bin.skip(bin.available() - 2);
b[2] = bin.read();
b[3] = bin.read();
bin.close();
boolean m = bin.markSupported();
for (int e : b) {
System.out.print(e + "-");
}
//
StringBuffer buf = new StringBuffer("");
for (int e : b) {
buf.append(e);
buf.append(", ");
}
buf.delete(buf.length() - 2, buf.length());
System.out.println(buf.toString());
// should be: 255, 216, 255, 217
其他图片格式需要再学习相应的格式规范,以此类推,应该不难。
分享到:
相关推荐
#### 一、图片文件格式判断技术背景 在处理图像时,经常需要识别一张图片的具体格式,比如 JPEG、PNG 或 BMP 等。这不仅是为了更好地进行图片展示,也是为了能够根据不同的格式采取相应的优化措施。在 Java 开发中...
Java判断上传图片格式的实例代码 在本文中,我们将详细介绍Java判断上传图片格式的实例代码,主要讲解了如何使用Java来判断上传的图片格式。我们都知道,客户上传图片时,可能会将png的图片后缀名改为jpg,从而绕过...
### Java获取网页中图片的方法与判断网页代码中是否包含有效图片 在当今互联网时代,从网页中抓取图片是常见的需求之一,特别是在数据抓取、网络爬虫或内容分析等应用中。Java作为一种广泛使用的编程语言,提供了...
Java判断是否为图片的步骤和方法 Java判断是否为图片的步骤和方法是Java编程语言中一个常见的需求,特别是在文件上传和处理等场景中。下面将详细介绍Java判断是否为图片的步骤和方法。 判断是否为图片的步骤 1. ...
* 根据文件流读取图片文件真实类型 * @param is 文件输入流 * @return 文件类型 */ public static String getTypeByStream(FileInputStream is) throws IOException { byte[] b = new byte[4]; is.read(b, 0,...
根据头信息判断文件类型是计算机科学中的一个常见技术,它基于这样一个事实:大多数文件格式在开始部分都会包含一些特定的字节序列,这些序列被称为“魔术数字”或“文件签名”,用于标识文件的类型。这种方法在很多...
下面将详细介绍如何在Java中读取这两种格式的Excel数据,以及需要引用的jar包。 首先,对于`.xls`格式的Excel文件,通常我们使用Apache POI库进行处理。Apache POI是一个流行的API,专门用于读写Microsoft Office...
import org.dcm4che3.tool.dcm2jpg.Dcm2Jpg; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 3. dcm2Jpg.setFrame(1); dcm2Jpg.initImageWriter("JPEG",null,null,null,1l); dcm2Jpg.convert(dcmFile,...
对于每个`ZipEntry`,你可以根据条目名判断是否是你要读取的部分,比如`AndroidManifest.xml`是APK文件的核心配置文件,我们可以读取它来获取应用的元数据: ```java if ("AndroidManifest.xml".equals(entryName))...
批量生成图片通常涉及到循环和条件判断,以根据不同的配置文件生成不同内容的图片。配置文件可以是XML、JSON或者自定义格式,包含图片的尺寸、颜色、文字、图形等信息。例如,一个JSON配置文件可能如下: ```json {...
1、解析图片的信息,支持图片的类型支持格式,如 jpg、 png、bmp、 cur、 dds、gif、 hdr (pic)、 ...2、本程序不是通过扩展名来识别图片格式,而是通过文件头和文件格式特征来判断图片格式。 3、兼容windows、Linux
- **图片格式判断**:通过`isJpg`函数判断图片是否为JPG格式,并确定缩略图的扩展名。 - **读取原图**:使用`ImageIO.read(File)`方法读取原始图片。 - **尺寸判断与缩放**: - 如果图片的高度或宽度超过120像素...
3. **图片保存**:旋转后的图片需要保存到服务器的指定目录,确保文件名唯一,避免覆盖原有文件。 4. **数据库记录**:如果图片信息存储在数据库中,应更新相应的旋转元数据,以便在查询时能正确显示。 5. **优化...
`compressImage`方法则用于压缩图片,这里我们简单地使用了`javax.imageio.ImageIO.write`方法,将图片保存为JPEG格式,并通过设置`quality`参数来控制压缩质量。 当处理来自iPhone的照片时,确保在上传之前先调用`...
要打开一个特定类型的文件,例如文本文件(.txt)、图片文件(.jpg、.png)或音频文件(.mp3),我们需要使用InputStream或OutputStream来读写文件。对于读取文件,可以使用FileInputStream,而对于写入文件,可以...
Java 读取图片的mimeType的方法是指通过编解码的方式判断图片是否合法,从而获取图片的mimeType。这种方法可以避免通过文件后缀名来判断图片格式的不可靠性。下面是 Java 读取图片的mimeType的方法的详细介绍: 一...
结合`File.isDirectory()`和`File.isFile()`检查每个条目是否为图片文件,根据文件扩展名判断。 5. **文件过滤**: 为了只处理图片文件,可以创建一个`FilenameFilter`或使用Java 7的`Files.walkFileTree()`方法配合...
4. **文件格式检查**: 在保存之前,要验证文件是否为图片格式,如JPEG、PNG、GIF等,可以通过文件的MIME类型或文件头信息判断。 5. **文件大小限制**: 限制上传文件大小以防止DoS攻击和资源耗尽,可以通过配置...
不同的文件类型都有其对应的文件头信息,例如jpg图片的文件头信息是FFD8FF,png图片的文件头信息是89504E47等。 在Java中,我们可以使用FileInputStream来读取文件的头信息,然后根据头信息来判断文件类型。下面是...
- **文件验证**:对上传的图片进行大小、格式等验证,防止恶意文件上传。 - **返回响应**:向前端发送反馈信息,告知上传状态,如成功、失败、错误信息等。 3. **安全性**: - **防止CSRF攻击**:添加CSRF token...