成人激色综合天天,中文亚洲av片在线观看,又粗又大又硬毛片免费看,国产aⅴ精品一区二区三区久久,亚洲欧美自偷自拍视频图片

如何利用Python找出損壞的圖像?

譯文
CIOAge
修復(fù)或者替換受損圖像本身并不困難,通常只需要大家重新渲染圖像或者再次嘗試傳輸。其核心問題在于如何盡早找出那些受損圖像。

【51CTO.com快譯】如果大家的工作涉及處理計(jì)算機(jī)圖像,那么總有一天會(huì)遇到文件損壞這類問題。我個(gè)人經(jīng)常處理動(dòng)畫渲染工作(請(qǐng)注意,***的渲染方式是對(duì)圖像文章進(jìn)行按序渲染,而非一次性處理視頻文件),所以這類問題真的經(jīng)常造成困擾。另外,攝影師甚至是普通用戶在處理計(jì)算機(jī)圖像時(shí),也往往會(huì)遇到色調(diào)映射及文件傳輸過程造成的圖像損壞。

事實(shí)上,修復(fù)或者替換受損圖像本身并不困難,通常只需要大家重新渲染圖像或者再次嘗試傳輸。其核心問題在于如何盡早找出那些受損圖像。這類問題被發(fā)現(xiàn)的時(shí)間點(diǎn)越晚,給您造成的麻煩就越大。

[[183717]]

那么我們?cè)撊绾谓鉀Q?最直觀的辦法無疑是不斷打開文件,若其發(fā)生損壞則相關(guān)圖像編輯器或者查看器即會(huì)報(bào)錯(cuò)。然而當(dāng)圖像數(shù)量極大時(shí),單單是瀏覽一遍圖像就可能耗費(fèi)數(shù)小時(shí)甚至數(shù)天時(shí)間。雖然動(dòng)畫渲染處理的文件通常體積較小,但數(shù)量卻相當(dāng)驚人。我個(gè)人經(jīng)常需要渲染超過44000幀圖像,由此帶來的審查工作量可想而知。

那么該如何解決?答案很簡單——編寫腳本。

首先,列出要檢查的文件。假定要檢查的所有圖像文件皆處于硬盤上的單一目錄內(nèi),另外假設(shè)大家會(huì)立足于此目錄運(yùn)行腳本,則可使用以下Python代碼獲取對(duì)應(yīng)文件列表:

import os for filename in os.listdir('./'): print(filename)

如果愿意,大家也可以進(jìn)一步縮小圖像列表(或者更為明確地進(jìn)行說明,例如不會(huì)將腳本本身作為其中一個(gè)文件),具體方式為添加PNG擴(kuò)展名:

import os for filename in os.listdir('./'): if filename.endswith('.png'): print(filename)

現(xiàn)在您已經(jīng)擁有當(dāng)前工作目錄內(nèi)各PNG圖像文件的列表了。接下來弄清哪些圖像已經(jīng)受損。遺憾的是,目前我們還很難在不配合圖像處理功能的情況下直接判斷其是否受損,這意味著大家需要首先獲取圖像處理模塊以查看這些文件。但好消息是,Python開發(fā)社區(qū)提供了現(xiàn)成的解決方案。

事實(shí)上,大家可以直接安裝完整的軟件包庫。這里我推薦pip(Python軟件包的推薦安裝工具)。在大多數(shù)平臺(tái)上,其都會(huì)在您安裝Python時(shí)被默認(rèn)一同安裝。

備注:我個(gè)人使用Python 3,但如果大家使用Python 2,那么本文內(nèi)容會(huì)因版本差異而需要進(jìn)行調(diào)整。另外,很多Linux發(fā)行版會(huì)建議大家安裝自己的軟件包管理系統(tǒng)。這里之所以推薦pip,是因?yàn)槠淠軌蛟谌恐С諴ython運(yùn)行的平臺(tái)上提供相同的助益。

這里我還建議大家安裝Pillow這款軟件包。其屬于PIL(Python圖像庫)的一款友好型fork,適用于現(xiàn)有Python 3與Python 2。要安裝Pillow,您只需要在終端窗口內(nèi)輸入pip install Pillow即可。這套Python軟件包工具隨后會(huì)自行搞定其它工作。

安裝完成后,接下來是將其運(yùn)用至腳本當(dāng)中。其使用方式與Python中的其它模塊相同,您可使用import實(shí)現(xiàn)——在本示例中,您可使用import PIL。不過要找到受損圖像,大家并不需要將Pillow庫全部導(dǎo)入腳本。在Python中,大家可以只導(dǎo)入模塊中的某一子組件。這種作法能夠有效降低內(nèi)存占用率,更重要的是從起點(diǎn)階段即明確自己的腳本需要哪些功能。另外,在導(dǎo)入子組件時(shí),您的腳本所需要的輸入內(nèi)容也更少,即能夠簡化整個(gè)使用過程。

要導(dǎo)入模塊中的子組件,大家可以將import與from指令相配合。在Pillow中,大家的腳本只需要使用Image類,因此可以使用from PIL import Image這樣的表達(dá)。事實(shí)上,您完全能夠利用os模塊實(shí)現(xiàn)同樣的效果。這意味著我們可以將import os調(diào)整為from os import listdir,這意味著當(dāng)運(yùn)行此腳本時(shí),將不再需要輸入os.listdir。相反,大家只需要輸入listdir,即可完成全部必要導(dǎo)入。

總結(jié)起來,現(xiàn)在我們的腳本應(yīng)如下所示:

from os import listdir from PIL import Image for filename in listdir('./'): if filename.endswith('.png'): print(filename)

雖然圖像已經(jīng)加載完成,但腳本并未對(duì)其進(jìn)行任何處理?,F(xiàn)在開始討論腳本的功能部分。很明顯,我們需要打開每個(gè)圖像文件并檢查其是否可讀。如果存在錯(cuò)誤,則意味著發(fā)現(xiàn)了一個(gè)受損文件。要實(shí)現(xiàn)這一功能,大家可以使用try/except代碼塊。簡言之,您的腳本會(huì)嘗試運(yùn)行一條函數(shù)以打開文件。如果該函數(shù)返回錯(cuò)誤,即屬于exception,則代表圖像出了問題。具體而言,該項(xiàng)例外屬于IOError或者SyntaxError類型,則代表圖像受損。

實(shí)現(xiàn)try/except的語法非常簡單,如下所示:

try: # These next functions may produce an exception # <some function> except (IOError, SyntaxError) as e: # These are the exceptions we're looking for # <do something... like print an intelligent error message>

為了找到受損圖像文件,大家還需要測(cè)試兩項(xiàng)函數(shù):Image.open( )與verify( )。如果將其打包進(jìn)try/except代碼塊,則最終腳本如下所示:

from os import listdir from PIL import Image for filename in listdir('./'): if filename.endswith('.png'): try: img = Image.open('./'+filename) # open the image file img.verify() # verify that it is, in fact an image except (IOError, SyntaxError) as e: print('Bad file:', filename) # print out the names of corrupt files

全部完成!將此腳本保存在您的圖像文件目錄內(nèi),運(yùn)行后即可得到一份包含全部受損圖像文件的列表。如果沒有任何輸出結(jié)果,則證明所有圖像文件皆未損壞。

就是這么簡單,希望大家能夠享受腳本編寫與其運(yùn)行效果帶來的樂趣!

原文標(biāo)題:Using Python to find corrupted images,原文作者:Jason van Gumster

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:wangxuze 來源: 51cto.com
相關(guān)推薦

2024-11-20 16:12:31

Python圖像處理計(jì)算機(jī)視覺

2012-11-06 10:21:54

硬件修復(fù)

2019-11-11 14:40:10

Python劃水老板

2020-02-05 09:53:03

Windows 10系統(tǒng)文件Windows

2011-07-28 14:45:03

iOS圖像顯示

2020-04-21 18:12:45

Linux桌面環(huán)境

2019-03-04 11:30:07

修復(fù)Windows 10系統(tǒng)文件

2009-06-09 15:52:40

C#指針圖像操

2024-01-02 13:16:00

數(shù)據(jù)遷移PythonPETL

2009-07-19 10:01:37

linuxlinux安全后門

2020-11-11 08:00:00

Linux系統(tǒng)修復(fù)

2012-12-13 13:46:08

2015-11-03 14:56:11

內(nèi)置模塊信息Linux

2022-06-02 15:42:05

Python機(jī)器學(xué)習(xí)

2018-12-21 09:10:51

UbuntuLinux修復(fù)損壞

2021-07-27 09:02:50

Python下載音樂Python基礎(chǔ)

2021-02-20 09:27:36

Python編程語言機(jī)器學(xué)習(xí)

2009-06-11 10:35:49

圖像下拉列表imgdiv

2019-12-16 10:43:38

Linux內(nèi)存消耗進(jìn)程

2020-10-13 08:53:04

算法最小值

51CTO技術(shù)棧公眾號(hào)