Python PIL圖片如何按比例裁剪
PIL圖片如何按比例裁剪
問(wèn)題描述
如圖片比例為 1:1 裁剪為 4:3
1.jpg
解決方案
from PIL import Image def image_clip(filename, savename, width_scale, height_scale): """圖像裁剪 :param filename: 原圖路徑 :param savename: 保存圖片路徑 :param width_scale: 寬的比例 :param height_scale: 高的比例 """ image = Image.open(filename) (width, height), (_width, _height) = image.size, image.size _height = width / width_scale * height_scale if _height > height: _height = height _width = width_scale * height / height_scale image.crop((0, 0, _width, _height)).save(savename) # 左上角 # image.crop((0, height - _height, _width, height)).save(savename) # 左下角 # image.crop((width - _width, 0, width, _height)).save(savename) # 右上角 # image.crop((width - _width, height - _height, width, height)).save(savename) # 右下角 if __name__ == '__main__': filename = '1.jpg' savename = 'result.jpg' image_clip(filename, savename, width_scale=4, height_scale=3) # image_clip(filename, savename, width_scale=3, height_scale=4)
效果
PIL調(diào)整圖片大小
使用 PIL 在圖片比例不變的情況下修改圖片大小。
介紹
Image.resize
def resize(self, size, resample=BICUBIC, box=None, reducing_gap=None): """ Returns a resized copy of this image. 返回此圖像的大小調(diào)整后的副本。 :param size: The requested size in pixels, as a 2-tuple: (width, height). param size: 請(qǐng)求的大小(以像素為單位),是一個(gè)二元數(shù)組:(width, height) :param resample: An optional resampling filter. This can be one of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BOX`, :py:attr:`PIL.Image.BILINEAR`, :py:attr:`PIL.Image.HAMMING`, :py:attr:`PIL.Image.BICUBIC` or :py:attr:`PIL.Image.LANCZOS`. Default filter is :py:attr:`PIL.Image.BICUBIC`. If the image has mode "1" or "P", it is always set to :py:attr:`PIL.Image.NEAREST`. See: :ref:`concept-filters`. param resample: 一個(gè)可選的重采樣過(guò)濾器。 :param box: An optional 4-tuple of floats providing the source image region to be scaled. The values must be within (0, 0, width, height) rectangle. If omitted or None, the entire source is used. param box: 可選的4元浮點(diǎn)數(shù),提供要縮放的源映像區(qū)域。 :param reducing_gap: Apply optimization by resizing the image in two steps. First, reducing the image by integer times using :py:meth:`~PIL.Image.Image.reduce`. Second, resizing using regular resampling. The last step changes size no less than by ``reducing_gap`` times. ``reducing_gap`` may be None (no first step is performed) or should be greater than 1.0. The bigger ``reducing_gap``, the closer the result to the fair resampling. The smaller ``reducing_gap``, the faster resizing. With ``reducing_gap`` greater or equal to 3.0, the result is indistinguishable from fair resampling in most cases. The default value is None (no optimization). param reducing_gap: 通過(guò)兩個(gè)步驟調(diào)整圖像大小來(lái)應(yīng)用優(yōu)化。 :returns: An :py:class:`~PIL.Image.Image` object. returns: 返回一個(gè) PIL.Image.Image 對(duì)象 """
看代碼吧
from PIL import Image image = Image.open('圖片路徑') # 調(diào)整圖片大小,并保持比例不變 # 給定一個(gè)基本寬度 base_width = 50 # 基本寬度與原圖寬度的比例 w_percent = base_width / float(image.size[0]) # 計(jì)算比例不變的條件下新圖的長(zhǎng)度 h_size = int(float(image.size[1]) * float(w_percent)) # 重新設(shè)置大小 # 默認(rèn)情況下,PIL使用Image.NEAREST過(guò)濾器進(jìn)行大小調(diào)整,從而獲得良好的性能,但質(zhì)量很差。 image = image.resize((base_width, h_size), Image.ANTIALIAS)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用jupyter?notebook保存python代碼為.py格式問(wèn)題
這篇文章主要介紹了使用jupyter?notebook保存python代碼為.py格式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Python/R語(yǔ)言分別實(shí)現(xiàn)斐波那契數(shù)列的示例詳解
這篇文章將通過(guò)兩個(gè)小問(wèn)題:年齡計(jì)算、斐波那契數(shù)列,帶領(lǐng)大家深入淺出的理解兩種語(yǔ)言的基本語(yǔ)法,并用以實(shí)際場(chǎng)景,需要的可以參考一下2022-03-03Python實(shí)現(xiàn)簡(jiǎn)易的限流器介紹
大家好,本篇文章主要講的是Python實(shí)現(xiàn)簡(jiǎn)易的限流器介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01淺談Python從全局與局部變量到裝飾器的相關(guān)知識(shí)
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python從全局與局部變量到裝飾器的相關(guān)知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06對(duì)Python3 解析html的幾種操作方式小結(jié)
今天小編就為大家分享一篇對(duì)Python3 解析html的幾種操作方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02對(duì)python指數(shù)、冪數(shù)擬合curve_fit詳解
今天小編就為大家分享一篇對(duì)python指數(shù)、冪數(shù)擬合curve_fit詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12