精华内容
下载资源
问答
  • python图像文件压缩
    千次阅读
    2020-12-04 13:04:58

    python实现图片压缩的方法:1、导入Image包;2、使用get_size(file)命令获取图片文件的大小;3、使用【os.path.splitext()】方式拼接文件地址;然后压缩文件到指定大小;4、修改图片尺寸即可。

    一、导入包from PIL import Image

    import os

    二、获取图片文件的大小def get_size(file):

    # 获取文件大小:KB

    size = os.path.getsize(file)

    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=150, step=10, quality=80):

    """不改变图片尺寸压缩到指定大小

    :param infile: 压缩源文件

    :param outfile: 压缩文件保存地址

    :param mb: 压缩目标,KB

    :param step: 每次调整的压缩比率

    :param quality: 初始压缩比率

    :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 

    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: 重设尺寸文件保存地址

    :param x_s: 设置的宽度

    :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'D:\learn\space.jpg')

    resize_image(r'D:\learn\space.jpg')推荐课程:Python进阶视频教程

    更多相关内容
  • 图像文件压缩。使用PIL库对图像进行等比例压缩,无论压缩前文件大小如何,压缩后文件大小小于10KB。 from PIL import Image#引入PIL库中的Image类 import os#引入os 模块 使用Image类中的open()方法从文件加载图像...
  • 这是用python写的数据压缩代码,可运行,包括图片处理等,及测试代码,内含详细处理图片的文档,理解起来方便通透。
  • 主要介绍了python使用pil进行图像处理(等比例压缩、裁剪)实例代码,首先介绍了pil的相关内容,然后分享了实例代码,具有一定借鉴价值,需要的朋友可以参考下。
  • PDF压缩工具,目前只针对纯PDF图片文件,可批量压缩文件,压缩后的文件默认生成在D:/smallPDF
  • Python基于tingpng的Excel图片文件压缩工具 Windows下基于tingpng的Excel图片文件压缩工具,tingpng在线实现将Excel文件内图片实现低损压缩的小工具。 Python基于tingpng的Excel图片文件压缩工具 Windows...
  • 由于云盘空间有限,照片尺寸也是很大,所以写个Python程序压缩一下照片,腾出一些云盘空间 1、批量压缩照片 新建 photo_compress.py 代码如下 # -*- coding: utf-8 -*- """脚本功能说明:使用 tinypng api,一键...
  • 使用方法: 在Pycharm的terminal中输入”python xxx.py source_dir dest_dir”就可以把source_dir中的图片文件进行压缩并保存到dest_dir中 源码 from PIL import Image import os import sys # 定义可以识别的图片...
  • python zip文件 压缩

    2020-11-22 20:58:41
    如何用python进行文件压缩呢从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用。1)简单应用如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一.....

    python zip文件 压缩

    更新时间:2008年12月24日 23:13:49 作者:

    看了我前面的一系列文章,不知道你会不会觉得python是无所不能的,我现在就这感觉!如何用python进行文件压缩呢

    从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用。

    1)简单应用

    如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一个简单的用法,让你一看就能明白。

    import zipfile

    f = zipfile.ZipFile('filename.zip', 'w' ,zipfile.ZIP_DEFLATED)

    f.write('file1.txt')

    f.write('file2.doc')

    f.write('file3.rar')

    f.close()

    f.zipfile.ZipFile('filename')

    f.extractall()

    f.close()

    不知道上面的例子是不是足够简单呢?

    1.1 zipfile.ZipFile(fileName[, mode[, compression[, allowZip64]]])

    fileName是没有什么疑问的了。

    mode和一般的文件操作一样,'r'表示打开一个存在的只读ZIP文件;'w'表示清空并打开一个只写的ZIP文件,或创建一个只写的ZIP文件;'a'表示打开一个ZIP文件,并添加内容。

    compression表示压缩格式,可选的压缩格式只有2个:ZIP_STORE;ZIP_DEFLATED。ZIP_STORE是默认的,表示不压缩;ZIP_DEFLATED表示压缩,如果你不知道什么是Deflated,那么建议你去补补课。

    allowZip64为True时,表示支持64位的压缩,一般而言,在所压缩的文件大于2G时,会用到这个选项;默认情况下,该值为False,因为Unix系统不支持。

    1.2 zipfile.close()

    说真的,这个没什么可说的,如果有的话,那就是你写入的任何文件在关闭之前不会真正写入磁盘。

    1.3 zipfile.write(filename[, arcname[, compress_type]])

    acrname是压缩文件中该文件的名字,默认情况下和filename一样

    compress_type的存在是因为zip文件允许被压缩的文件可以有不同的压缩类型。

    1.4 zipfile.extractall([path[, member[, password]]])

    path解压缩目录,没什么可说的

    member需要解压缩的文件名儿列表

    password当zip文件有密码时需要该选项

    对于简单的应用,这么多就够了。

    2)高级应用

    2.1 zipfile.is_zipfile(filename)

    判断一个文件是不是压缩文件

    2.2 ZipFile.namelist()

    返回文件列表

    2.3 ZipFile.open(name[, mode[, password]])

    打开压缩文档中的某个文件

    2.4 ZipFile.infolist()

    2.5 ZipFile.getinfo(name)

    上述文件返回ZipInfo对象,只不过一个返回的是列表,一个返回的是一个ZipInfo

    ZipInfo类

    2.6 ZipInfo.filename

    2.7 ZipInfo.date_time

    返回值的格式为(year,month,date,hour,minute,second)

    2.8 ZipInfo.compress_type

    2.9 ZipInfo.comment

    2.10ZipInfo.extra

    2.11ZipInfo.create_system

    2.12ZipInfo.extract_version

    2.13ZipInfo.reserved 总是0

    2.14ZipInfo.flag_bits

    2.15ZipInfo.volume

    2.16ZipInfo.internal_attr

    2.17ZipInfo.external_attr

    2.18ZipInfo.header_offset

    2.19ZipInfo.CRC

    2.20ZipInfo.file_size

    2.21ZipInfo.compress_size

    2.22ZipFile.testzip()

    检查每个文件和它对应的CRC,如果有错误返回对应的文件列表

    2.23ZipFile.setpassword(password)

    2.24ZipFile.read(name[,password])

    返回对应的文件

    2.25ZipFile.printdir()

    打印压缩文件夹的信息

    2.26ZipFile.writestr(zipinfo_or_arcname, bytes)

    PyZipFile类

    zipfile.PyZipFile除了上面的方法和属性之外,还有一个特殊的方法

    2.27PyZipFile.writepy(pathname,basename)

    一般情况下,仅仅压缩.pyc和.pyo文件,不压缩.py文件

    ----------------------------------------------------------------------

    zip文件格式信息一个 ZIP 文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

    1)压缩源文件数据区

    在这个数据区中每一个压缩的源文件/目录都是一条记录,记录的格式如下: [文件头+ 文件数据 + 数据描述符]

    a、文件头结构

    组成 长度

    文件头标记 4 bytes (0x04034b50)

    解压文件所需 pkware 版本 2 bytes

    全局方式位标记 2 bytes

    压缩方式 2 bytes

    最后修改文件时间 2 bytes

    最后修改文件日期 2 bytes

    CRC-32校验 4 bytes

    压缩后尺寸 4 bytes

    未压缩尺寸 4 bytes

    文件名长度 2 bytes

    扩展记录长度 2 bytes

    文件名 (不定长度)

    扩展字段 (不定长度)

    b、文件数据

    c、数据描述符

    组成 长度

    CRC-32校验 4 bytes

    压缩后尺寸 4 bytes

    未压缩尺寸 4 bytes

    这个数据描述符只在全局方式位标记的第3位设为1时才存在(见后详解),紧接在压缩数据的最后一个字节后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。

    2)压缩源文件目录区

    在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据

    组成 长度

    目录中文件文件头标记 4 bytes (0x02014b50)

    压缩使用的pkware 版本 2 bytes

    解压文件所需 pkware 版本 2 bytes

    全局方式位标记 2 bytes

    压缩方式 2 bytes

    最后修改文件时间 2 bytes

    最后修改文件日期 2 bytes

    CRC-32校验 4 bytes

    压缩后尺寸 4 bytes

    未压缩尺寸 4 bytes

    文件名长度 2 bytes

    扩展字段长度 2 bytes

    文件注释长度 2 bytes

    磁盘开始号 2 bytes

    内部文件属性 2 bytes

    外部文件属性 4 bytes

    局部头部偏移量 4 bytes

    文件名 (不定长度)

    扩展字段 (不定长度)

    文件注释 (不定长度)

    3)压缩源文件目录结束标志   组成 长度

    目录结束标记 4 bytes (0x02014b50)

    当前磁盘编号 2 bytes

    目录区开始磁盘编号 2 bytes

    本磁盘上纪录总数 2 bytes

    目录区中纪录总数 2 bytes

    目录区尺寸大小 4 bytes

    目录区对第一张磁盘的偏移量 4 bytes

    ZIP 文件注释长度 2 bytes

    ZIP 文件注释 (不定长度)

    相关文章

    bcimg0.png

    今天小编就为大家分享一篇解决python tkinter界面卡死的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-07-07

    bcimg1.png

    这篇文章主要介绍了原生python实现knn分类算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10

    bcimg2.png

    这篇文章主要介绍了Python3.6+selenium2.53.6自动化测试_读取excel文件的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-09-09

    bcimg3.png

    这篇文章主要介绍了在Mac OS上搭建Apache服务器和Python解释器的开发环境,虽然Mac OS上自带Python但往往难以满足开发者对版本的需求,需要的朋友可以参考下2015-12-12

    bcimg4.png

    这篇文章主要介绍了python实现去除下载电影和电视剧文件名中的多余字符的方法,可以批量修改视频文件名称,非常具有实用价值,需要的朋友可以参考下2014-09-09

    bcimg5.png

    这篇文章主要介绍了Python爬虫实现百度图片自动下载的方法以及相关代码分析,对此有兴趣的朋友参考下。2018-02-02

    bcimg6.png

    下面小编就为大家分享一篇Python实现中一次读取多个值的方法,具有很好的参考价值,我对大家有所帮助。一起跟随小编过来看看吧2018-04-04

    bcimg7.png

    这篇文章主要介绍了Django分页查询并返回jsons数据(中文乱码解决方法),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-08-08

    bcimg8.png

    今天小编就为大家分享一篇Python 使用指定的网卡发送HTTP请求的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-08-08

    bcimg9.png

    这篇文章主要介绍了Python中List.count()方法的使用教程,是Python入门中的基础知识,需要的朋友可以参考下2015-05-05

    最新评论

    展开全文
  • 3行Python 代码实现图片压缩

    千次阅读 2021-11-03 21:55:29
    有些网站总是会提醒我你的图片文件过大,请提交不超过 2 MB大小的图片、想想也正常,不限制图片大小容易被塞爆服务器,但是我手机这1亿像素的照片让我很难办呀而且在线压缩的网站也有上限大小,不然就收费,不然就...

    大家好,我是一行

    最近因为工作,经常需要在网站提交一些文件和图片

    但是在提交图片的时候,有些网站总是会提醒我你的图片文件过大,请提交不超过 2 MB大小的图片、

    想想也正常,不限制图片大小容易被塞爆服务器,但是我手机这1亿像素的照片让我很难办呀

    而且在线压缩的网站也有上限大小,不然就收费,不然就收费,不然就收费

    这种简单功能我要是还付费,岂不是丢了pythoner的face了吗?!我把它实现了我也去上线~

    1原理

    仔细分析了一下,图片压缩的原理其实很简单

    简单来说,像素图片过大的原因不就是像素格太多了嘛

    只要读取所有像素,按规律删掉或者合并像素格,图片的就变小了

    当然也要区别有损和无损的情况,只要视觉上过的去,那就没什么问题

    2代码块

    简单压缩

    下面三行代码完成了图片从 9 MB到 327.65 KB 的压缩效果

    只需要使用PIL导入图片,再按照压缩率保存就可以了

    下面这张结果图,显然压缩过到我都认出来的情况

    from PIL import Image
    
    im = Image.open("pic/cat.jpg")
    # 保存,quality是压缩比率
    im.save("cat-out2.jpg", quality=1) 
    
    

    进阶压缩

    进一步修改压缩的代码,可以设定压缩图片的目标大小

    然后使用循环来迭代完成目标,最后封装成函数,未来就可以批量压缩图片了

    def compress_image(infile, outfile='', mb=1500, step=10, quality=80):
        """不改变图片尺寸压缩到指定大小
        :param infile: 压缩源文件
        :param outfile: 压缩文件保存地址
        :param mb: 压缩目标,KB
        :param step: 每次调整的压缩比率
        :param quality: 初始压缩比率
        :return: 压缩文件地址,压缩文件大小
        """
        o_size = os.path.getsize(file)/1024
        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)
    
    
    

    像这样从9 MB 压缩到 1.47 MB,肉眼也是看不出来有什么明显差别,妥妥可以提交到网站上了

    3最后

    虽然说,程序员不必要去重复造轮子

    但是想想有多少人上传自己的身份证、毕业证等文件到这些在线平台进行图片压缩

    如果这些在线网站将个人信息的相关图片都保存下来,日后加以利用,我的小爱语音助手可能接不过来电话了

    居然还聊起来了

    所以说,对于个人信息安全还是需要保持谨慎

    我是一行,技术用不眠,我们下期见~


    一行把自己的各种Python玩法文章整理成了一本电子书,干货满满!

    目录如下,还包括自己各种面试赚钱经验,现在免费送给大家~

    链接: https://pan.baidu.com/s/11R1XRdxbDrFeHdosfP3aGA 密码: dl55

    在这里插入图片描述

    展开全文
  • python批量压缩tif文件

    2022-06-09 17:44:00
    使用python批量压缩tif文件

    python批量压缩tif文件

    1. 前言
      Tif文件是栅格数据最常用的一种格式。图像数据区以位图的方式进行数据的表示。因此Tif文件可以进行压缩,常用的压缩方式有LZW、RAW、RLE、CCITT等。 我在进行DEM数据的裁剪时,发现各个省的数据量非常大,比如说四川省的30m的DEM数据的大小为2G。考虑到有限的电脑磁盘空间,我对Tif文件采用了LZW压缩。
    2. 流程
      在这里插入图片描述
    3. 批量压缩代码
    #文件夹中每个文件都进行压缩
    # -*- coding: utf-8 -*-
    import rasterio as rio
    import rasterio
    import os
    from tqdm import tqdm
    
    #每个线程选择一个文件夹
    Input_path ="输入文件夹"+"\\"
    Output_path ="输出文件夹"+"\\"
    #文件列表
    pathDir= os.listdir(Input_path)
    
    #压缩函数
    for i in tqdm(range(len(pathDir))):
        # 读入栅格文件
        rasterfile = Input_path+"\\"+pathDir[i]
        #打开栅格
        rasterdata = rio.open(rasterfile)
        #读取栅格
        rasterdata2= rasterdata.read()
        #获取栅格信息
        profile = rasterdata.profile
        print(profile)
        #选择压缩方式
        profile.update(
            compress='lzw',  #压缩方式:rle,lzw等
            )
        #导出文件路径与名字
        out_put_name=Output_path +"RLE"+pathDir[i]
        #导出
        with rasterio.open(out_put_name, mode='w', **profile) as dst:
            dst.write(rasterdata2)
    
    1. 结果展示
      在这里插入图片描述
      首先是四川省的原始文件大小为2.23Gb,压缩后的大小为0.99Gb,压缩了大概
    展开全文
  • 使用python批量压缩图片文件

    千次阅读 2021-10-12 15:06:41
    以下代码用于批量压缩png/jpg格式的图片文件,遇到报错就使用pip大法安装一下对应的类库就可以了。 dynamic_quality.py import PIL.Image from math import log from SSIM_PIL import compare_ssim def get_ssim_...
  • Python实现图片压缩.py

    2020-08-07 16:34:26
    项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩。 具体说明见下述链接: https://blog.csdn.net/weixin_43964993/article/details/107865140
  • python zip压缩文件

    千次阅读 2020-09-28 17:39:44
    一、本文编写缘由 在之前写的《python 爬取p站排行榜并自动发送邮件》中涉及到把插画原图文件夹整体打包压缩,然后以...因此,有了将一个文件压缩成多个文件的需求。 二、单个文件压缩 三、单个目录压缩 ...
  • Python一键实现图像压缩图像处理

    多人点赞 热门讨论 2022-06-26 19:47:34
    随着现在短视频类越来越火,随之而来的就是大量的视频图像的处理, 不过在辣条眼里编程无所不能,你们觉得呢~
  • python图像压缩脚本(内附PIL安装包和处理图片、基于SVD分解和图像重组)
  • python批量图片压缩

    千次阅读 2022-02-26 21:39:58
    python批量图片压缩
  • Python实现PDF文件压缩

    千次阅读 2021-06-10 10:21:26
    PDF文件压缩非常常用,python的PyMuPDF包可以对PDF文件进行灵活的自定义压缩。 1. 原理 PDF切分为图片,根据压缩率zoom压缩图片后保存本地;图片合成PDF 2. 依赖 PyMuPDF包 pip install PyMuPDF 3. 代码 import ...
  • Python:实现Zip格式的文件压缩

    千次阅读 2021-09-15 22:11:50
    这个压缩文件,代码不多,里面的代码很精髓!!!
  • 使用python图片进行压缩

    千次阅读 2022-05-22 23:10:56
    简单说明 对于图片,强行被定义高和宽会变形,我们希望图片被改变大小后,比例保持不变,完成对图片压缩。 使用工具 ...定义缩小后的图片宽度大小,并根据原图比例计算压缩图像的高度 使用resize
  • Python 图片压缩

    千次阅读 2021-07-14 12:55:59
    Python 图片压缩 我做了一个处理Markdown图片的小工具markdown-img,在之前给这个工具添加了主流图床支持后功能基本完备了。昨天写了一篇影评的博客扎导版正义联盟观影吐槽,图片都是从电影中截取的,每张都是1Mb...
  • Python实现图片压缩

    千次阅读 2020-10-27 16:18:12
    二:获取图片文件的大小 def get_size(file): # 获取文件大小:KB size = os.path.getsize(file) return size / 1024 三:拼接输出文件地址 ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 ...
  • 前言项目中大量用到图片加载,由于图片太大,加载速度很慢,因此需要对文件进行统一压缩一:导入包from PIL import Imageimport os二:获取图片文件的大小def get_size(file):# 获取文件大小:KBsize = os.path.get...
  • Python快速压缩图片

    2022-06-24 18:49:18
    python图片压缩
  • 这是一个通过python开发的图片批量文件,可以直接运行exe文件,也可以通过源码安装相应的模块后运行源码来使用。使用时选择图片所在的文件夹然后操作即可。可以对图片期望压缩的大小进行调整,也能对压缩率进行调整...
  • 要修改的地方都在代码中解释了,图片质量越低,文件体积越小。
  • 使用Python进行压缩与解压缩

    千次阅读 2022-03-30 09:12:56
    来源:Python编程学习圈在日常工作中,除了会涉及到使用Python处理文本文件,有时候还会涉及对压缩文件的处理。通常会涉及到的压缩文件格式有:rar:Windows 环境下用的比较多的压缩,比较著名的GUI工具是winrartar:...
  • 压缩文件隐藏到图片python实现,更改筛选标准可以推广到融合各种文件
  • python使用zlib压缩和解压文件

    千次阅读 2022-03-31 14:40:23
    zlib设置压缩等级,zlib压缩等级为1-9,数值越大压缩比越高,压缩速度越慢

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,236
精华内容 18,494
关键字:

python图像文件压缩