[Pythonは]不完全なダウンロード、半分グレーJPG、JPEG、PNG画像のスクリプトを検出し、

なぜそれが問題ですか?
1、ネットワークの問題:ネットワークが不安定で、受信した情報は、完全な画像ではありません。問題のその応答;
2、ローカルディスクがいっぱいです:時々受け取った画像情報が完全であるが、任意のローカルディスクを保存するには、すべての後に、そのいくつかのMbのの絵を持っています。

エラー画像を検出する方法は?
非常に多くの方法を試してみましたが、より良いアプローチが終わるアイデンティティのjpg、jpeg形式は、PNGファイルを決定することです。

JPGファイルの終了を識別:\ XFF \ XD9
JPEGファイル終了を識別:\ XFF \ XD9
PNGファイルの終了を識別:\ xaeB` \ X82
不完全な絵コードを検出

クラスCheckImage(オブジェクト):

    デフ__init __(自己、IMG):
        オープン(IMG、 "RB")とFとして:
            f.seek(-2、2)
            self.img_text = f.read()
            f.close()を

    check_jpg_jpeg DEF(自己):
        "" "検出JPG画像の完全性、完全Trueを返し、不完全Falseを返します" ""
        BUF = self.img_text
        リターンbuf.endswith(B '\ XFF \ XD9')

    check_png DEF(自己):
        "" "" "検出PNG画像の完全性、完全Trueを返し、不完全Falseを返します"

        BUF = self.img_text
        リターンbuf.endswith(B '\ xaeB` \ X82')

全体像せずにフォルダを検出し、削除します

輸入OS
CheckImageインポートCheckImageから


クラスCheckBrockImage(オブジェクト):
    デフ__init __(自己、train_dir):
        self.train_dir = train_dir
        self.completeFile = 0
        self.incompleteFile = 0

    get_imgs DEF(自己):
        "" "" "フォルダ内のすべての画像から"
        os.listdirでファイル用(self.train_dir):
            os.path.splitext(ファイル)[1] .lower()= IF = '.JPG'またはos.path.splitext(ファイル).lower()== ".JPEG" [1]:
                RET = self.check_img(ファイル)
                RET IF:
                    。self.completeFile + 1 =

                他:
                    self.incompleteFile self.incompleteFile + = 1
                    #self.img_remove(ファイル)#削除不完全な絵

    デフimg_remove(自己、ファイル):
        "" "删除图片" ""
        os.remove(self.train_dir +ファイル)

    check_img DEF(セルフ、img_file):
        "" "" "画像の整合性を検出するには、絵の完全Trueを返し、絵はFalseを返します不完全である"
        checkImageを返す(self.train_dir + img_file).check_jpg_jpeg()

    RUN DEF(自己):
        "" "実行可能ファイル" ""
        self.get_imgs()
        印刷( '不完全な画像:%d個の数ヶ月は' %self.incompleteFile)
        印刷( '完全な画像:%d個の数ヶ月は' %self.completeFile)


__name__ == IF '__main__':
    train_dir = 'C:/ユーザー/ 79993 /デスクトップ/ BrockImg / TextImg /' #検知フォルダ
    IMGS = CheckBrockImage(train_dir)
    imgs.run()
 

不完全な画像JPGをスキップ

 オープンで(os.path.join(パス、ファイル名)、 'RB')としてf:
    
                check_chars = f.read()[ - 2:]
                !もしcheck_chars = B '\ XFF \ XD9':
        
                  引き続き
                他:
                  IMG = cv2.imread(os.path.join(パス、ファイル名)、1)
 

公開された41元の記事 ウォン称賛7 ビュー3668

おすすめ

転載: blog.csdn.net/weixin_43091087/article/details/105093506