Python技巧之實(shí)現(xiàn)批量統(tǒng)一圖片格式和尺寸
前言
大家在工作的時(shí)候是不是都會接觸到很多的圖片,為了滿足不同的需求:
兼容性:不同設(shè)備和應(yīng)用程序可能支持不同的圖片格式。通過轉(zhuǎn)換圖片格式,可以確保在各種設(shè)備和應(yīng)用程序中都能夠正確地顯示圖片。
文件大小:不同的圖片格式具有不同的文件大小。有時(shí)候,將圖片從一種格式轉(zhuǎn)換為另一種格式可以顯著減小文件大小,這有助于在網(wǎng)絡(luò)上更快地加載圖片。
質(zhì)量:有些圖片格式對于特定類型的圖像效果更好。通過轉(zhuǎn)換圖片格式,可以選擇更適合特定圖像的格式,從而提高圖像質(zhì)量。
編輯能力:不同的圖片格式支持不同的編輯功能。通過將圖片轉(zhuǎn)換為支持所需編輯功能的格式,可以更輕松地進(jìn)行編輯工作。
如果我們需要把圖片轉(zhuǎn)換成文件,用Python學(xué)習(xí)的知識是不是能實(shí)現(xiàn)呢?
Python模塊之Image的應(yīng)用示例
1.首先需要導(dǎo)入需要的圖像庫:
import Image
2.讀取一張圖片:
im=Image.open(‘/home/Picture/test.jpg')
3.顯示一張圖片:
im.show()
4.保存圖片:
im.save(“save.gif”,“GIF”) #保存圖像為gif格式
5.創(chuàng)建新圖片:
Image.new(mode,size) Image.new(mode,size,color)
栗子:
newImg = Image.new(“RGBA”,(640,480),(0,255,0)) newImg.save(“newImg.png”,“PNG”)
6.兩張圖片相加:
Image.blend(img1,img2,alpha) # 這里alpha表示img1和img2的比例參數(shù)
7.點(diǎn)操作:
im.point(function) #,這個(gè)function接受一個(gè)參數(shù),且對圖片中的每一個(gè)點(diǎn)執(zhí)行這個(gè)函數(shù)
比如:
out=im.point(lambdai:i*1.5)#對每個(gè)點(diǎn)進(jìn)行50%的加強(qiáng)
8.查看圖像信息:
im.format, im.size, im.mode
9.圖片裁剪:
box=(100,100,500,500) #設(shè)置要裁剪的區(qū)域 region=im.crop(box) #此時(shí),region是一個(gè)新的圖像對象。
10.圖像黏貼(合并)
im.paste(region,box)#粘貼box大小的region到原先的圖片對象中。
11.通道分離:
r,g,b=im.split()#分割成三個(gè)通道,此時(shí)r,g,b分別為三個(gè)圖像對象。
12.通道合并:
im=Image.merge(“RGB”,(b,g,r))#將b,r兩個(gè)通道進(jìn)行翻轉(zhuǎn)。
13.改變圖像的大?。?/p>
out=img.resize((128,128))#resize成128*128像素大小
14.旋轉(zhuǎn)圖像:
out=img.rotate(45) #逆時(shí)針旋轉(zhuǎn)45度
有更方便的:
region = region.transpose(Image.ROTATE_180)
15.圖像轉(zhuǎn)換:
out = im.transpose(Image.FLIP_LEFT_RIGHT) #左右對換 out = im.transpose(Image.FLIP_TOP_BOTTOM) #上下對換
16.圖像類型轉(zhuǎn)換:
im=im.convert(“RGBA”)
17.獲取某個(gè)像素位置的值:
im.getpixel((4,4))
18.寫某個(gè)像素位置的值:
img.putpixel((4,4),(255,0,0))
圖片批量轉(zhuǎn)換和尺寸調(diào)整代碼示例
''' 圖片格式批量轉(zhuǎn)換 ''' def istype(filetype): ''' 判斷是否為圖片文件 :param filetype: 文件擴(kuò)展名 :return: 是,返回True,不是,返回False ''' filetype = filetype.lower() # 擴(kuò)展名轉(zhuǎn)換為小寫 # 判斷是否為圖片格式 if filetype == '.jpg' or filetype=='.jpeg' or filetype=='.png' or filetype=='.gif' or filetype=='.bmp' or filetype=='.tif': return True # 返回True else: return False def thumpic(filepath, width, height): try: image = Image.open(filepath) # 打開圖片文件 # 按指定大小對圖片進(jìn)行縮放(不一定完全按照設(shè)置的寬度和高度,而是按比例縮放到最接近的大小) image.thumbnail((width, height)) # 下面的方法會以嚴(yán)格按指定大小對圖片進(jìn)行縮放,但可能會失真 # image = image.resize((width, height)) image.save(filepath) # 保存縮放后的圖片 # print('圖片處理完成……') # os.startfile(path) # 打開指定路徑進(jìn)行預(yù)覽 except Exception as e: print(e) import os from PIL import Image while True: oldpath = input('請輸入要轉(zhuǎn)換格式的圖片路徑:') newpath = input('請輸入轉(zhuǎn)換格式后的圖片保存路徑:') flag = int(input('''要轉(zhuǎn)換的格式: 1、jpg 2、jpeg 3、png 4、gif 5、bmp 6、tif 請選擇:''')) width=int(input('請輸入寬度限制:')) height=int(input('請輸入高度限制:')) list = os.listdir(oldpath) # 遍歷選擇的文件夾 for i in range(0, len(list)): # 遍歷文件列表 filepath = os.path.join(oldpath, list[i]) # 記錄遍歷到的文件名 if os.path.isfile(filepath): # 判斷是否為文件 filename= os.path.splitext(list[i])[0] # 獲取文件名 filetype = os.path.splitext(list[i])[1] # 獲取擴(kuò)展名 if istype(filetype): # 判斷是否為圖片文件 img = Image.open(filepath) # 打開圖片文件 # 根據(jù)選擇的格式轉(zhuǎn)換圖片,并保存 if flag == 1: img=img.convert('RGB') # 將圖片轉(zhuǎn)換為RGB格式,因?yàn)閖pg格式不支持透明度 img.save(os.path.join(newpath,filename+'.jpg'),'jpeg') thumpic(os.path.join(newpath,filename+'.jpg'), width, height) elif flag == 2: img = img.convert('RGB') img.save(os.path.join(newpath, filename + '.jpeg'),'jpeg') thumpic(os.path.join(newpath,filename+'.jpeg'), width, height) elif flag == 3: img.save(os.path.join(newpath, filename + '.png'),'png') thumpic(os.path.join(newpath,filename+'.png'), width, height) elif flag == 4: img.save(os.path.join(newpath, filename + '.gif'),'gif') thumpic(os.path.join(newpath,filename+'.gif'), width, height) elif flag == 5: img.save(os.path.join(newpath, filename + '.bmp'),'bmp') thumpic(os.path.join(newpath,filename+'.bmp'), width, height) elif flag == 6: img.save(os.path.join(newpath, filename + '.tif'), 'tiff') thumpic(os.path.join(newpath,filename+'.tif'), width, height) os.startfile(newpath) print('格式轉(zhuǎn)換完成……')
到此這篇關(guān)于Python技巧之實(shí)現(xiàn)批量統(tǒng)一圖片格式和尺寸的文章就介紹到這了,更多相關(guān)Python圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用TensorFlow實(shí)現(xiàn)簡單線性回歸模型
這篇文章主要為大家詳細(xì)介紹了使用TensorFlow實(shí)現(xiàn)簡單線性回歸模型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07python模塊和包的應(yīng)用BASE_PATH使用解析
這篇文章主要介紹了python模塊和包的應(yīng)用BASE_PATH使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12python實(shí)現(xiàn)高斯判別分析算法的例子
今天小編就為大家分享一篇python實(shí)現(xiàn)高斯判別分析算法的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12全面分析Python的優(yōu)點(diǎn)和缺點(diǎn)
本篇文章給大家詳細(xì)分析了Python的優(yōu)點(diǎn)和缺點(diǎn)以及相關(guān)的優(yōu)勢劣勢分析,對此有興趣的朋友學(xué)習(xí)下。2018-02-02Python threading模塊condition原理及運(yùn)行流程詳解
這篇文章主要介紹了Python threading模塊condition原理及運(yùn)行流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10