ImageMagick:用identify檢查圖片是否完整?(jpg/gif/png圖片是否損壞)


一,常用圖片格式的結束標志是什么?

1,Jpg格式的文件在16進制中的表示是以 ff d9 兩個字節結尾

2,  gif格式的文件,結尾是 3b

3,  png格式的文件,結尾是  00 00 00 00 49 45 4E 44 AE 42 60 82

 

說明:我們要用到identify的命令,需要安裝ImageMagick

參見這一篇:

https://www.cnblogs.com/architectforest/p/12807514.html

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,為什么要查看圖片的結束標志?

圖片文件在上傳過程中受網絡情況影響,有可能發生網絡中斷,

或者處理程序在處理圖片時不確定文件是否已上付完成,

圖片文件的結束位或結束標志就成為我們檢查文件是否完整的標准

 

三,用linux命令查看圖片的結束標志?

1,用xxd命令看一個完整圖片的結束標志:

[root@blog html]# xxd a.jpg | tail -2
000041a0: 94ec a491 cc58 b396 354d 8b06 c9b7 6e90  .....X..5M....n.
000041b0: 6922 6997 2294 21f2 bcff d9              i"i.".!....

說明:文件結尾是 ffd9,說明圖片文件完整

a.jpg如圖:

 

2,用xxd命令看一個不完整圖片的結束標志:

[root@blog html]# xxd b.jpg | tail -2
00002d20: 40a3 ff00 5c67 74f1 5f95 b4df d51e 6b21  @...\gt._.....k!
00002d30: 35e3                                     5.

說明:文件結尾不是 ffd9,說明圖片文件不完整而是已損壞

b.jpg如圖:

3,也可以使用od這個命令,還是上面的兩張圖片,舉例如下:

#--endian=big: 指定大端小端以大端方式輸出 

#-h: 指定以16進制輸出 

完整圖片

[root@blog html]# od --endian=big -h a.jpg | tail -2
0040660 6922 6997 2294 21f2 bcff d900
0040673

損壞圖片

[root@blog html]# od --endian=big -h b.jpg | tail -2
0026460 35e3
0026462

 

四,用identify檢查圖片是否完整?

1,檢查gif是否有損壞?

有損壞的gif

 [root@blog img]$ identify -verbose dog.gif | grep corrupt
identify: corrupt image `dog.gif' @ error/gif.c/DecodeImage/513.
identify: corrupt image `dog.gif' @ error/gif.c/ReadGIFImage/1389.

圖片如下:

無損壞的gif

[root@blog img]$ identify -verbose dog_tmb.gif | grep corrupt

沒有任何輸出 

圖片如下:

 

2,檢查jpg圖片是否有損壞?

有損壞的jpg

[root@blog html]$ identify -verbose b.jpg | grep Corrupt
identify: Premature end of JPEG file `b.jpg' @ warning/jpeg.c/JPEGWarningHandler/390.
identify: Corrupt JPEG data: premature end of data segment `b.jpg' @ warning/jpeg.c/JPEGWarningHandler/390.

無損壞的jpg不會輸出包含Corrupt字樣的信息

 

五,查看ImageMaigck的版本:

[root@blog html]# identify --version
Version: ImageMagick 6.9.10-86 Q16 x86_64 2020-01-13 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib cairo fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms ltdl 
lzma openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zlib

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM