溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python?Pillow?Image.save保存為jpg圖片壓縮的方法

發(fā)布時(shí)間:2021-11-23 13:38:37 來源:億速云 閱讀:3393 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Python Pillow Image.save保存為jpg圖片壓縮的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python Pillow Image.save保存為jpg圖片壓縮的方法”吧!

    Pillow圖片格式轉(zhuǎn)換

    Pillow 庫支持多種圖片格式,您可以直接使用 open() 方法來讀取圖片,并且無須考慮圖片是何種類型。Pillow 能夠很輕松地實(shí)現(xiàn)圖片格式之間的轉(zhuǎn)換。

    圖片格式之間的轉(zhuǎn)換主要有以下兩種方法,下面分別對(duì)它們進(jìn)行了介紹:

    save()

    顧名思義,save() 方法用于保存圖像,當(dāng)不指定文件格式時(shí),它會(huì)以默認(rèn)的圖片格式來存儲(chǔ);如果指定圖片格式,則會(huì)以指定的格式存儲(chǔ)圖片。save() 的語法格式如下:

    Image.save(fp, format=None)

    參數(shù)說明如下:

    • fp:圖片的存儲(chǔ)路徑,包含圖片的名稱,字符串格式;

    • format:可選參數(shù),可以指定圖片的格式。

    示例如下:

    from PIL import Image
    im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
    im.save('C:/Users/Administrator/Desktop/c.biancheng.net.bmp')

    此時(shí)您的計(jì)算機(jī)桌面上會(huì)存在一個(gè) c.bianchneg.net.BMP格式的圖片。

    convert()+save()

    注意,并非所有的圖片格式都可以用 save() 方法轉(zhuǎn)換完成,比如將 PNG 格式的圖片保存為 JPG 格式,如果直接使用 save() 方法就會(huì)出現(xiàn)以下錯(cuò)誤:

    from PIL import Image
    im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
    im.save('C:/Users/Administrator/Desktop/c.biancheng.net.jpg')

    錯(cuò)誤信息如下所示:

    #系統(tǒng)錯(cuò)誤,RGBA不能作為JPEG圖片的模式

    OSError: cannot write mode RGBA as JPEG

    引發(fā)錯(cuò)誤的原因是由于 PNG 和 JPG 圖像模式不一致導(dǎo)致的。其中 PNG 是四通道 RGBA 模式,即紅色、綠色、藍(lán)色、Alpha 透明色;JPG 是三通道 RGB 模式。因此要想實(shí)現(xiàn)圖片格式的轉(zhuǎn)換,就要將 PNG 轉(zhuǎn)變?yōu)槿ǖ?RGB 模式。

    Image 類提供的 convert() 方法可以實(shí)現(xiàn)圖像模式的轉(zhuǎn)換。該函數(shù)提供了多個(gè)參數(shù),比如 mode、matrix、dither 等,其中最關(guān)鍵的參數(shù)是 mode,其余參數(shù)無須關(guān)心。語法格式如下:

    convert(mode,parms**)
    • mode:指的是要轉(zhuǎn)換成的圖像模式;

    • params:其他可選參數(shù)。

    修改后的代碼如下所示:

    from PIL import Image
    im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
    #此時(shí)返回一個(gè)新的image對(duì)象,轉(zhuǎn)換圖片模式
    image=im.convert('RGB')
    #調(diào)用save()保存
    image.save('C:/Users/Administrator/Desktop/c.biancheng.net.jpg')

    通過以上代碼,成功將 PNG 格式的圖片轉(zhuǎn)換為了 JPG 格式。 

    Pillow Image.save 保存為jpg圖片壓縮

    在使用Pillow中的Image.save()方法,使用默認(rèn)參數(shù)保存jpg圖片的過程中發(fā)現(xiàn)圖片被壓縮的很嚴(yán)重,導(dǎo)致原來很大的大小變成幾十K。這是因?yàn)樵诒4鏋閖pg的過程中,內(nèi)部使用壓縮算法對(duì)圖片進(jìn)行的壓縮處理。

    但是有些時(shí)候往往需要圖片的大小不能變化太大或不能太小。所以在使用此方式時(shí)可以加入?yún)?shù):

    imObj.save(img_name, quality=95)

    quality參數(shù): 保存圖像的質(zhì)量,值的范圍從1(最差)到95(最佳)。 默認(rèn)值為75,使用中應(yīng)盡量避免高于95的值; 100會(huì)禁用部分JPEG壓縮算法,并導(dǎo)致大文件圖像質(zhì)量幾乎沒有任何增益。

    使用此參數(shù)后,圖片大小會(huì)增加。如果圖片的大小還不能滿足你的需求,是否還有其他方式去增加圖片大小呢?

    通過查閱資料并嘗試,發(fā)現(xiàn)save方法還有一個(gè)可以配合quality使用的參數(shù),能夠大大增加圖片大小:

    imObj.save(new_name, quality=95, subsampling=0)

    subsampling參數(shù):子采樣,通過實(shí)現(xiàn)色度信息的分辨率低于亮度信息來對(duì)圖像進(jìn)行編碼的實(shí)踐。 

    可能的子采樣值是0,1和2,對(duì)應(yīng)于4:4:4,4:2:2和4:1:1(或4:2:0?)。

    經(jīng)過實(shí)踐將值設(shè)為0便可以滿足圖片大小增大的需求。

    注意: 以上方法的參數(shù)只針對(duì)于保存為JPG/JPEG格式的圖片的情況。

    到此,相信大家對(duì)“Python Pillow Image.save保存為jpg圖片壓縮的方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI