日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

批量改变文件夹和子文件夹中图片格式的两种方法

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批量改变文件夹和子文件夹中图片格式的两种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

生活中,我們通常會(huì)遇到這種問(wèn)題:一個(gè)文件夾內(nèi)部有多個(gè)子文件夾,每個(gè)文件夾內(nèi)部有很多圖片,我們想改變這些圖片的格式。

?

例如.png格式圖片支持背景透明,但我們想把它變成背景不透明的.jpg圖片。又比如.bmp格式是非壓縮圖片,我們想把它轉(zhuǎn)換為無(wú)損壓縮的.png圖片以節(jié)省存儲(chǔ)空間。

?

如果圖片數(shù)量很少,很明顯我們可以通過(guò)Windows自帶的畫(huà)圖工具或者其他看圖軟件通過(guò)“另存為”一張張地轉(zhuǎn)換圖片格式。但是如果圖片很多,怎么辦?

?

這個(gè)問(wèn)題其實(shí)有兩個(gè)關(guān)鍵點(diǎn):

① 要求批量處理。

② 文件夾中還有子文件夾。

?

由于我同時(shí)熟悉Halcon和Photoshop,因此我提供兩種方式,供不同的讀者參考。

?

一、用Halcon批量修改圖片格式。

?

原文件夾和圖片如下所示:

?

代碼如下:

1 list_files ('D:/pic', ['files','recursive'], ImageFiles) 2 *'ignore_case':忽略大小寫(xiě) 3 tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) 4 for Index :=0 to |ImageFiles| - 1 by 1 5 read_image (Image, ImageFiles[Index]) 6 *tuple_strlen是得到tuple中某個(gè)元素的長(zhǎng)度,而不是tuple有幾個(gè)元素 7 tuple_strlen (ImageFiles[Index], Length) 8 9 *之所以 - 5 是因?yàn)橐サ簟?bmp” 10 tuple_substr (ImageFiles[Index], 0, Length -5, Substring) 11 write_image (Image, 'png', 0, Substring) 12 13 endfor

?

說(shuō)明:

算子list_files的參數(shù)'recursive'的意思是“遞歸”,即遞歸查找子文件夾中的文件;ImageFiles[Index]是每張圖片的實(shí)際路徑。通過(guò)對(duì)路徑字符串的截取操作,獲得不含.bmp后綴的文件名,然后最終將圖片保存為.png格式。

?

處理結(jié)果如下:

可以看到,圖片已經(jīng)批量轉(zhuǎn)換成功,且.png格式圖片占據(jù)的存儲(chǔ)空間明顯小于.bmp文件。

?

代碼當(dāng)然還有改進(jìn)的空間,例如我想在存為.png文件的同時(shí),刪除原.bmp文件。代碼修改如下:

1 list_files ('D:/pic', ['files','recursive'], ImageFiles) 2 *'ignore_case':忽略大小寫(xiě) 3 tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) 4 5 hadTransform := 0 6 for Index :=0 to |ImageFiles| - 1 by 1 7 read_image (Image, ImageFiles[Index]) 8 9 if (hadTransform = 1) 10 delete_file (ImageFiles[Index -1]) 11 endif 12 13 *tuple_strlen是得到tuple中某個(gè)元素的長(zhǎng)度,而不是tuple有幾個(gè)元素 14 tuple_strlen (ImageFiles[Index], Length) 15 16 *之所以 - 5 是因?yàn)橐サ簟?bmp” 17 tuple_substr (ImageFiles[Index], 0, Length -5, Substring) 18 write_image (Image, 'png', 0, Substring) 19 hadTransform := 1 20 endfor 21 22 delete_file (ImageFiles[Index -1])

最后一行代碼delete_file (ImageFiles[Index -1])的作用是跳出for循環(huán)后,刪除最后一張.bmp圖片。

?

?

二、用Photoshop批量修改圖片格式。

?

這個(gè)我粗略說(shuō)一下。

① 先在Photoshop里面錄制一個(gè)轉(zhuǎn)為.png的動(dòng)作(窗口——?jiǎng)幼?/strong>)。

② 通過(guò)“文件——自動(dòng)——批處理”,可以批量執(zhí)行剛才錄制的動(dòng)作。

?

?

相對(duì)于第一種方式來(lái)說(shuō),用Photoshop來(lái)解決這個(gè)問(wèn)題存在一個(gè)缺陷:轉(zhuǎn)換后的圖片只能保存在一個(gè)文件夾中,而不能像原文件那樣保存在不同文件夾中(例如不同子文件夾中)。其實(shí)也可以理解,畢竟別人做好了的軟件不如自己寫(xiě)代碼來(lái)得靈活。

?

不管采用上面的哪種方法,如果圖片有成千上萬(wàn)張的話,對(duì)于效率的提升都是驚人的——讓電腦在不停地運(yùn)轉(zhuǎn),出去遛個(gè)彎回來(lái),它就全部弄好了。

轉(zhuǎn)載于:https://www.cnblogs.com/xh6300/p/7260971.html

總結(jié)

以上是生活随笔為你收集整理的批量改变文件夹和子文件夹中图片格式的两种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。