首页 > 编程语言 >【Python】【图像处理】图片压缩方法

【Python】【图像处理】图片压缩方法

时间:2023-02-25 21:34:03浏览次数:44  
标签:img level Python 压缩 parse 图像处理 outpath import cv

一直想找个“无损压缩”的办法。
当然这并非真的无损。
我采用了Opencv的处理图像相关的方法。
请见代码:

注意:

opencv安装:pip install opencv-python

别想不开install cv2……

点击查看代码
# -*- coding: UTF-8 -*-
# 开发人员:萌狼蓝天
# 博客:Https://mllt.cc
# 笔记:Https://cnblogs.com/mllt
# 哔哩哔哩/微信公众号:萌狼蓝天
# 开发时间:2022/10/21
import urllib.parse as  parse

import cv2 as cv
from PIL import Image
import numpy as np
import os
def zipJPG(img,level,outpath):
    img = parse.unquote(img)
    outpath=parse.unquote(outpath)
    print(img)
    img=img.replace("%20"," ")
    outpath = outpath.replace("%20", " ")
    print(img)
    img = Image.open(img)  # 避免P模式图片造成异常
    # print(img.mode)
    # 转换图片模式为RGB
    img = img.convert("RGB")
    img = cv.cvtColor(np.asarray(img), cv.COLOR_RGB2BGR)
    # 转换为np数组
    # [1]cv.IMREAD_COLOR:加载彩色图像,任何图像的透明度都会被忽略,它是默认标志
    # [0]cv.IMREAD_GRAYSCALE:以灰度模式加载图像
    # [-1]cv.IMREAD_UNCHANGED:加载图像,包括 alpha 通道
    try:
        level=int(level)
    except:
        return "ERROR-IMG-ZIP-JPG-LEVEL"
    if level>100:
        level=100
    if level<0:
        level=0
    try:
        cv.imwrite("./temp.jpg",img,[cv.IMWRITE_JPEG_QUALITY,level])
        img = Image.open("temp.jpg")
        img.save(outpath)
        if(os.path.exists(outpath)):
            return outpath
        else:
            return "ERROR-IMG-ZIP-JPG-WRITE"
    except Exception as e:
        print(e)
        return "ERROR-IMG-ZIP-JPG-DEAL"
    # 对于JPEG格式的图片,这个参数表示从0 - 100的图片质量(CV_IMWRITE_JPEG_QUALITY), 默认值是95.
    #
    # 对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0 - 9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3.
    #
    # 对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值为1.
    # 判断文件是否存在,存在则返回成功,失败则返回失败

标签:img,level,Python,压缩,parse,图像处理,outpath,import,cv
From: https://www.cnblogs.com/mllt/p/opencv_picdel.html

相关文章

  • Python | import argparse模块的使用
    我们在写python脚本的时候,有时候需要在运行的时候传入参数,而不是写死在程序里,这个时候就要用到argparse模块。argparse模块是Python内置的用于命令项选项与参数解析的......
  • python学习——【第十四弹】
    前言上篇文章​​python学习——【第十三弹​​】中介绍了python中的模块,这篇文章接着学习python中的包。python中的包包是一种用“点式模块名”构造Python模块命名空间的......
  • python绘制基本图
    importpandasaspdimportnumpyasnpcatering_sale='D:\大三下\大数据实验课\data\catering_sale.xls'data=pd.read_excel(catering_sale,names=['data','sale'])......
  • python基础-元组tuple( )
    元组的定义和操作元组的特性:元素数量支持多个元素类型任意下标索引支持重复元素支持可修改性不支持数据有序是使用场景不可修改、可重复的......
  • python基础-列表[ ]
     1列表的定义#定义一个列表listmy_list=["jhk",123,'fasdf']print(my_list)print(type(my_list))#定义一个嵌套的列表my_list=[[1,2,3],[4,5,6],......
  • python 画图 chap3
    importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseplt.figure()p=data.boxplot(return_type='dict'......
  • python基础-基本语句
    1条件语句在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: 1if判断条件1:2执行语句1...3elif判断......
  • python基础-入门必备知识
    1标识符标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。以下划线开头的标识符有特殊含义......
  • python数据的基础绘图分析
    importpandasaspddf=pd.read_excel(r"C:\Users\ying\Desktop\catering_sale.xls")  print(df.describe())销量count200.000000mean2755......
  • python爬虫学习——re模块(正则表达式)
    正则表达式常用操作符.任何单个字符[]字符集,对单个字符给出取值范围[abc]、[a-z][^]非字符集,对单个字符给出排除范围[^abc]*对前一个字符0次或无限次拓......