使用 Python 切割图片

  刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手。

  于是撸袖子码脚本。

import os
from PIL import Imagedef splitimage(src, rownum, colnum, dstpath):img = Image.open(src)w, h = img.sizeif rownum <= h and colnum <= w:print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))print('开始处理图片切割, 请稍候...')s = os.path.split(src)if dstpath == '':dstpath = s[0]fn = s[1].split('.')basename = fn[0]ext = fn[-1]num = 0rowheight = h // rownumcolwidth = w // colnumfor r in range(rownum):for c in range(colnum):box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)num = num + 1print('图片切割完毕,共生成 %s 张小图片。' % num)else:print('不合法的行列切割参数!')src = input('请输入图片文件路径:')
if os.path.isfile(src):dstpath = input('请输入图片输出目录(不输入路径则表示使用源图片所在目录):')if (dstpath == '') or os.path.exists(dstpath):row = int(input('请输入切割行数:'))col = int(input('请输入切割列数:'))if row > 0 and col > 0:splitimage(src, row, col, dstpath)else:print('无效的行列切割参数!')else:print('图片输出目录 %s 不存在!' % dstpath)
else:print('图片文件 %s 不存在!' % src)

  然后执行。

  恩,确实很简单。Python 的库实在很强大,也很好用。我居然有些不想用 Delphi 写小工具了:)

转载于:https://www.cnblogs.com/ecofast/p/5487926.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据分析知识点_Python数据分析--Pandas知识点(三)

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. 下面将是在知识点一, 二的基础上继续总结. 前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matplotlib配合绘制出折线图, 散点图, 饼图, 柱形图, 直方图等五大基本图形. Matplotlib是python…

SPI通讯协议

SPI&#xff1a;高速同步串行口。是一种标准的四线同步双向串行总线。 SPI&#xff0c;是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM&#xff0c;FLASH&#x…

基于MVVM的知乎日报应用安卓源码

使用data binding , dagger2 , retrofit2和rxjava实现的&#xff0c;基于MVVM的知乎日报APP运行效果&#xff1a; <ignore_js_op> 使用说明&#xff1a; 项目结构android data binding来实现MVVM。dagger2来完成依赖注入。retrofit2rxjava实现restful的http请求。第三方类…

F#创建者Don Syme谈F#设计原则

在.Net Fringe 2016大会上&#xff0c;F#创建者Don Syme谈了他对F#现状的看法以及F#的二元性。F#是以一个为面向对象语言构建的运行时为基础构建的函数式语言。\\F#是2010年发布的&#xff0c;遵循开源许可协议。F#比.Net更早地踏上了开源之路&#xff0c;C#和.Net在2015年才开…

php签入html出来的影响seo吗_搜索引擎优化_SEO必备6大技能+SEO误区讲解!

大家好&#xff0c;我是逆冬&#xff0c;今天来分享一下实战SEO需要掌握什么样的技能以及SEO知识误区&#xff0c;本篇文章仅代表逆冬本人几年的经验、不见得适合每一个SEOer!下面就让逆冬本人来分析一下实战型SEO到底需要掌握什么技能。第1点&#xff1a;SEO需要不需要熟练掌握…

编写linux驱动程序步骤

一、建立Linux驱动框架&#xff08;装载、卸载Linux驱动&#xff09; Linux内核在使用驱动时首先要装载驱动&#xff0c;在装载过程中进行一些初始化动作&#xff08;建立设备文件、分配内存等&#xff09;&#xff0c;在驱动程序中需提供相应函数来处理驱动初始化工作&#xf…

一种M2M业务的架构及实现M2M业务的方法

http://www.cnblogs.com/coryxie/p/3849764.html 技术领域 [0001] 本发明涉及通信技术领域&#xff0c;尤其涉及一种M2M业务的架构及实现M2M业务的方法。 背景技术 [0002] 随着通信技术的飞速发展以及通信技术与互联网技术的进一步融合&#xff0c;移动业务以及移动互联网技术普…

第二章 mybatis使用注解实现in查询(mysql)

mybatis实现in查询&#xff0c;两种方法&#xff1a; xml形式&#xff08;推荐&#xff09;注解方式&#xff08;个人喜欢注解&#xff0c;但是in场景可能不太适合注解&#xff09;代码&#xff1a; 1 Select("<script>" 2 "SELECT ID…

python面试代码题_python面试基础篇80题

1.为什么学习python?3.Python和Java、PHP、C、C#、C等其他语言的对比&#xff1f; C语言由于其底层操作特性和历史的积累&#xff0c;在嵌入式领域是当之无愧的王者。 PHP跨平台&#xff0c;性能优越&#xff0c;跟linux/unix结合比跟windows结合性能强45%,开发成本低,php5已经…

主设备号与次设备号以及申请

一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各设备。例如一个嵌入式系统&#xff0c;有两个LED指示灯&#xff0c;LED灯需要独立的打开或者关闭。那么&#xf…

javascript 变量作用域

为什么80%的码农都做不了架构师&#xff1f;>>> javascript中的变量的作用域不同于java/c的变量规则。 1、在java/c中&#xff0c;如果有一个全局变量与一个局部变量重名&#xff0c;那么在局部变量的作用域中&#xff0c;局部变量会覆盖掉全局变量的值。当离开局部…

七月算法--12月机器学习在线班-第五次课笔记—回归

七月算法--12月机器学习在线班-第五次课笔记—回归 七月算法&#xff08;julyedu.com&#xff09;12月机器学习在线班学习笔记 http://www.julyedu.com 转载于:https://www.cnblogs.com/sweet-dew/p/5491271.html

集合添加元素python_Python基础:列表、字典、元组、集合、添加和删除元素,增删...

列表&#xff08;有序&#xff09; 添加 list.append(元素)&#xff1a;在列表末尾添加新的元素 list.extend(seq)&#xff1a;在列表末尾一次性追加另一个序列中的多个值 –seq可以是列表、元组、字典&#xff0c;若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。 l…

file_operations结构体分析 (设备文件的操作)

linux设备驱动中file_operations结构体分析 struct module *owner第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块的指针. 这个成员用来在它的操作还在被使用时阻止模块被卸载. 几乎所有时间中, 它被简单初始化为 THIS_MODULE, 一个在 <Linux…

公司网络搭建及×××到公司配置

一、公司路由器及子网配置公司192.168.1.0/24子网用于服务器集群&#xff0c;192.168.0.0/24子网用于办公子网&#xff0c;两个子网物理上不在一块。公司开业时&#xff0c;申请了电信40Mbps专线光纤&#xff0c;5个IP地址&#xff0c;网关&#xff1a;*.168.112.9 255.255.25…

js——全选框 checkbox

一直会碰见input 全选框的问题&#xff0c;先整理一种情况&#xff1a; 1. <input id"selectAll" type"checkbox" />全选 2. <input typecheckbox idid1 namecb value1 />value1 <input typecheckbox idid2 namecb value2 />value2 &…

手机编写python程序_Python实现自动上京东抢手机

本文实例为大家分享了Python自动上京东抢手机的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 上次抢荣耀V9&#xff0c;被京东给恶心到了&#xff0c;所以就写了个简单的Python来自动抢V9。虽然用的是比较蠢的方法&#xff0c;但觉得还是有可以学习的地方。所以在这…

struct cdev结构体和cdev_init和cdev_add函数

在Linux内核2.6版本以前&#xff0c;注册一个字符设备的的经典方法是使用register_chrdev&#xff0c;相应的从设备中注销字符设备的方法是unregister_chrdev&#xff0c;而在2.6版本以后&#xff0c;字符设备函数的注册与注销使用的是如下一套方法&#xff1a; #include<li…

蓝鸥零基础学习HTML5第五讲 CSS的基础样式

蓝鸥零基础学习HTML5第五讲 CSS的基础样式1.border<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Document</title><style>div {width:0px;height:0px;/*background: url("img/1.jpg…

class_create()函数

内核中定义了struct class结构体&#xff0c;一个struct class 结构体类型变量对应一个类&#xff0c;内核同时提供了class_create()函数&#xff0c;可以用它来创建一个类&#xff0c;这个类存放于sysfs下面&#xff0c;一旦创建了这个类&#xff0c;再调用device_create()函数…