在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小。
在Ubuntu 16.04.5 LTS上利用python 2.7版本的pillow库拼接近千张图片实录
我尝试了市面上所有的压缩软件,发现处理时间冗长且压缩效果较差。下面是采用python的PIL中的Image模块,十几行代码就实现,几分钟就搞定了。感觉python的图像处理功能还是非常强大的,以前小看了它。
压缩之前的图片和压缩之后的图片对比:
压缩前 103327013字节,分辨率9600*5616,
压缩后 5274988字节,分辨率1920*1123,
压缩比大约是20:1
代码
#!/usr/bin/env python
#encoding: utf-8
#description: 压缩指定图片到指定尺寸(1080P),实测比较靠谱
#date: 2018-12-19from PIL import Image
import os#输入参数说明:
#src_dir: 源图片所在目录
#dst_dir: 输出图片所在目录
#fn: 待处理的图片文件名
def resize_image(src_dir, dst_dir, fn):filename = os.path.join(src_dir, os.path.basename(fn))print(filename)with Image.open(filename) as img:width, height = img.sizenew_width = 1920 #1280new_height = int(new_width * height * 1.0 / width)#调整图片到新的尺寸(1080p)#强调是PIL带ANTIALIAS滤镜缩放效果resized_img = img.resize((new_width, new_height), Image.ANTIALIAS)out_fn = filename.replace(src_dir, dst_dir)#将调整后的文件存放到指定目录下面resized_img.save(out_fn)if __name__ == '__main__':source_dir = '/home/taoyx/program_develop/python_dev/img_joint/'target_dir = '/home/taoyx/program_develop/python_dev/img_processing/'#fname = 'poster_all_500*720.png'fname = 'poster_all_300*432.png' resize_image(source_dir, target_dir, fname)
效果图
执行下面的命令,得到我们想要的效果
python img_resize.py
(注意:因为这里图片上传大小不得超过5MB,这里的样例图片是压缩后720P大小的图片,2.5MB大小)
vue中安装wangEditor
cnpm install wangeditor
创建公用组件:在src/vue/components文件夹中创建wangEditor.vue
缘由
这两年网上出现了使用python中的PIL或是pillow库拼接图片和朋友圈图像的例子,让我非常感兴趣,比较典型的是这几个例子:
《朋友圈的朋友们,你们终于可以互相看到了》
《1000张图片如何拼接》
我实操了一下,发现还是有些小问题,下面是我消化吸收和改进的过程。改进的地方:
1.存放图片的文件夹是任意指定的,里面文...
本文介绍的例子在Android安卓手机上测试通过。 先看看效果吧。可以看到这个开发好的安卓应用有三个按钮:Zoom In缩小图片,Zoom Out放大图片和Save保存。 初始页面: 可以在左边边框自由移动图片,图片下面的调试界面debug screen会显示详细的图片矩阵matrix信息: 点击Save button后,根据左...
原理分析:当鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置。(同时,当鼠标在小图片上移动时,右侧大图片往相反的方向移动。) 放大镜特效设计: ①页面元素:小图片,大图片以及盛放图片的容器 ②事件捕获:onmouseover(当鼠标指针移动到指定对象上时发生)、onmouseout(当鼠标指针移除指定对象时发...
需求
有时候自媒体创作写稿时难免遇到大规模压缩某个文件夹内的图片的情况,通常我们可以使用一些批量压缩的工具来处理,但我觉得,这是小白的做法,对于我们这些经验丰富的老司机来说,使用代码来处理,将是一件高效而且高逼格的事情。使用PIL中的Image模块,就能很快地完成这项工作。
准备
我的电脑图片文件夹中有一个壁纸文件夹"win8壁...
**
debug:g2o cmake时报错“Qt5 not found. Install it and set Qt5_DIR accordingly”
**
完整报错: @ubuntu:~/WorkSpace/g2o/build$ cmake …/ – Compiling on Unix – Found CHOLMOD and...
在python 中如果通过多线程的方式执行某个方法很简单,只需要把同步函数的第一个参数为该函数对象即可。但是如果函数对象是某个类的静态方法,这时候如果直接使用类的该函数对象会报错。此时需要构造一个代理的方法来实现。 如:上一个博文中的统计目录大小的静态类方法,如果想要查询多目录的空间大小,并且做成多线程个的方式。可采用下面的方法:...
1 build_kernel()
2 {
3 # 进入源码顶层目录
4 cd ${BS_DIR_KERNEL} || return 1
5 # 编译配置文件
6 make ${BS_CONFIG_KERNEL} ARCH=arm CROSS_COMPILE=...
git rm -rf dirgit add .git commit -m 'remove dir'git push origin master //dir是要删除的文件夹路径
转载于:https://www.cnblogs.com/xulei1992/p/5650399.html...
第一步,用Xshelll/Xftp连接远程服务器
第二步,cd /路径/路径,如果路径名称记不住可以搭配Tab键
第三步,找到对应目录后,可以用ll或者ls来查看当前目录结构
第四步,上传本地更新包 先安装上传命令yum install lrzsz -y 然后rz -y,该命令是强制覆盖服务器同名文件(慎重使用-y,...
文章目录0 前言1 核心问题1.1 引擎的各方面性能受限于数据结构的选择1.2 压缩功能 导致的CPU瓶颈1.3 Crash-safe 崩溃异常的无奈选择1.4 当前主流 加速硬件 较难满足存储性能提升的要求2 XDP 设计原则2.1 数据结构上的优化2.2 解决 压缩引入的CPU消耗2.3 异常恢复的设计2.4 易于集成3 XDP...
现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传 输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是 相当可观的。如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服...