前言
很多時(shí)候拍的圖片都是幾百KB 甚至多少M(fèi)來算的,有時(shí)候證件照要求的又很小,作為一個(gè)程序員,總不能老是在網(wǎng)上找壓縮的吧,而且又麻煩,不如自己用程序跑跑啦
壓縮程序
from PIL import Image
import os
def get_size(file):
# 獲取文件大小:KB
size = os.path.getsize(file)
print(size)
return size / 1024
def get_outfile(infile, outfile):
if outfile:
return outfile
dir, suffix = os.path.splitext(infile)
outfile = '{}-out{}'.format(dir, suffix)
return outfile
def compress_image(infile, outfile='', mb=19, step=10, quality=80):
"""不改變圖片尺寸壓縮到指定大小
:param infile: 壓縮源文件
:param outfile: 壓縮文件保存地址
:param mb: 壓縮目標(biāo),KB
:param step: 每次調(diào)整的壓縮比率
:param quality: 初始?jí)嚎s比率
:return: 壓縮文件地址,壓縮文件大小
"""
o_size = get_size(infile)
if o_size <= mb:
return infile
outfile = get_outfile(infile, outfile)
while o_size > mb:
im = Image.open(infile)
im.save(outfile, quality=quality)
if quality - step < 0:
break
quality -= step
o_size = get_size(outfile)
return outfile, get_size(outfile)
def resize_image(infile, outfile='', x_s=1376):
"""修改圖片尺寸
:param infile: 圖片源文件
:param outfile: 重設(shè)尺寸文件保存地址
:param x_s: 設(shè)置的寬度
:return:
"""
im = Image.open(infile)
x, y = im.size
y_s = int(y * x_s / x)
out = im.resize((x_s, y_s), Image.ANTIALIAS)
outfile = get_outfile(infile, outfile)
out.save(outfile)
if __name__ == '__main__':
compress_image(r'C:/Users/Administrator/Desktop/111.jpg')
# resize_image(r'D:\python\test.jpg')
懶得寫太詳細(xì)注釋了,不懂可以問噢,后續(xù)會(huì)把不懂的放上來,或者優(yōu)化代碼文章來源:http://www.zghlxwxcb.cn/news/detail-838608.html
點(diǎn)贊或收藏可以鼓勵(lì)作者加快更新喲~文章來源地址http://www.zghlxwxcb.cn/news/detail-838608.html
到了這里,關(guān)于python圖像處理——圖像壓縮(調(diào)整圖片的存儲(chǔ)大?。┑奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!