current position:Home>Python modify picture resolution (with code) | Python tool

Python modify picture resolution (with code) | Python tool

2022-02-02 09:46:48 Swordsman a Liang_ ALiang

Catalog

Preface

Environment depends on

Code

summary  


Preface

This article provides a method to adjust the image resolution python Code , Pragmatism as always .

Environment depends on

ffmpeg Environmental installation , You can refer to another article of mine :windows ffmpeg Installation and deployment _ A Liang's blog -CSDN Blog

ffmpy install :

pip install ffmpy -i https://pypi.douban.com/simple

Code

Don't bullshit , Code up .

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/12/11 21:43
# @Author  :  Swordsman a Liang _ALiang
# @Site    :
# @File    : image_tool.py

import os
import uuid
from ffmpy import FFmpeg


#  Resize the picture 
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

Code instructions :

1、change_size The method input parameters are : Picture address 、 Output directory address 、 Width to be modified 、 Height to be modified .

2、 The verified image format is only png、jpg, If you need to add, add it yourself .

3、 To avoid duplicate output file names , Use uuid As the file name .

Check it out :

The prepared pictures are as follows :

Execute code :

if __name__ == '__main__':
    print(change_size('data/1234.jpg', 'data/', 1280, 720))

Execution results :

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

Effect picture :

 

OK, No problem .

summary  

There is nothing to sum up .

Share :

        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!

                                                                                                                      ——《 Shawshank redemption 》

If this article works for you , Please like it , thank you !

copyright notice
author[Swordsman a Liang_ ALiang],Please bring the original link to reprint, thank you.
https://en.pythonmana.com/2022/02/202202020946467411.html

Random recommended