目錄
前言
環境依賴
代碼
總結
前言
本文提供將圖片解析度調整的python代碼,一如既往的實用主義,
環境依賴
ffmpeg環境安裝,可以參考我的另一篇文章:windows ffmpeg安裝部署_阿良的博客-CSDN博客
ffmpy安裝:
pip install ffmpy -i https://pypi.douban.com/simple
代碼
不廢話,上代碼,
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/12/11 21:43
# @Author : 劍客阿良_ALiang
# @Site :
# @File : image_tool.py
import os
import uuid
from ffmpy import FFmpeg
# 調整圖片大小
def change_size(image_path: str, output_dir: str, width: int, height: int):
ext = os.path.basename(image_path).strip().split('.')[-1]
if ext not in ['png', 'jpg']:
raise Exception('format error')
_result_path = os.path.join(
output_dir, '{}.{}'.format(
uuid.uuid1().hex, ext))
ff = FFmpeg(inputs={'{}'.format(image_path): None}, outputs={
_result_path: '-vf scale={}:{}'.format(width, height)})
print(ff.cmd)
ff.run()
return _result_path
代碼說明:
1、change_size方法入參分別為:圖片地址、輸出目錄地址、需要修改的寬、需要修改的高,
2、驗證的圖片格式只有png、jpg,如需添加自行添加,
3、為了避免輸出檔案檔案名重復,使用uuid作為檔案名,
驗證一下:
準備的圖片如下:


執行代碼:
if __name__ == '__main__':
print(change_size('data/1234.jpg', 'data/', 1280, 720))
執行結果:
E:\ProgramData\Anaconda3\envs\pytorch\python.exe C:/Users/yi/PycharmProjects/test/image_tool.py
ffmpeg -i data/123.jpg -vf scale=1280:720 data/709ad7cc5a8a11ec82c82c4d54eea02b.jpg
ffmpeg version n4.3.1-20-g8a2acdc6da Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3-win32 (GCC) 20200320
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libtwolame --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomp
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, image2, from 'data/123.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 170762 kb/s
Stream #0:0: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 1920x1080, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 000001d3c41b6c00] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'data/709ad7cc5a8a11ec82c82c4d54eea02b.jpg':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: mjpeg, yuvj444p(pc), 1280x720, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.91.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 1 fps=0.0 q=7.8 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.28x
video:106kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
data/709ad7cc5a8a11ec82c82c4d54eea02b.jpg
效果圖片:

OK,沒什么問題,
總結
沒啥好總結的,
分享:
Perhaps one day you muster the courage, to make a clean breast of everything in the heart only ended up to let others see the joke, because they did not understand you to say what, also don't know why do you think things are so important, say, almost cried out. I think the worst thing in the world, than with full of heart and secret, but no one can tell, but no one can understand!
——《肖申克的救贖》
如果本文對你有作用的話,請點個贊吧,謝謝!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379482.html
標籤:python
