使用 Python 切割图片-程序员宅基地

技术标签: python  photoshop  

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

  于是撸袖子码脚本。

import os
from PIL import Image

def splitimage(src, rownum, colnum, dstpath):
    img = Image.open(src)
    w, h = img.size
    if 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 = 0
        rowheight = h // rownum
        colwidth = w // colnum
        for 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 + 1

        print('图片切割完毕,共生成 %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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30653023/article/details/96547477

智能推荐

android频繁出入栈导致闪退,安卓概率性闪退 - layabox问答社区-HTML5引擎社区-LayaAir开发者社区...-程序员宅基地

文章浏览阅读831次。概率性闪退附带堆栈#00 pc 00000000005975cc /data/app/com.mylafe.game.handsomecat-1/lib/arm64/liblayaair.so (laya::JCServerFileCache::getFileID(char const*)+32) [arm64-v8a]2#01 pc 00000000005d02cc /data/app/com..._liblayaair.so

mysql无法启动服务的错误日志文件_MYSQL 服务无法启动,错误日志:InnoDB: .\ibdata1 must be writable...-程序员宅基地

文章浏览阅读852次。产生背景:之前在win7系统能正常运行,但今天重装系统,把c盘格式化了,在新系统运行mysql就报如下错误:错误提示;E:\mysql5.7\bin>mysqld --console2018-04-15T14:57:12.199569Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --..._shutting down plugin 'csv

同步捕获matlab,基于多匹配滤波器的跳码直扩同步捕获方法与流程-程序员宅基地

文章浏览阅读702次。本发明涉及扩频通信领域。背景技术:在抗干扰性和保密性要求较高的卫星通信以及军事通信领域,跳码直扩通信系统得到了较广泛的应用,而跳码同步捕获是跳码直扩通信系统中的关键技术。所谓捕获实际上就是在一个周期内通过相关运算进行伪码相位的搜索过程。在扩频接收系统中伪码捕获算法的种类有很多,如发送参考序列、统一定时法,虽然这些方法的设计结构简单易于实现,但是局限性较大,性能较差,捕获时间较长,耗时太大无法完成同..._扩频捕获

php-Arrays 函数-array_pad-用值将数组填补到指定长度_array补充到一定长度-程序员宅基地

文章浏览阅读2.4k次。array_pad() 用值将数组填补到指定长度【功能】 该函数将返回指定数组的一个复制,并用指定的值将其填补到指定的长度。 如果指定长度为正,则数组被填补到右侧,如果为负则从左侧开始填补。 如果指定长度的绝对值小于或等于原数组的长度,则没有任何填补 有可能一次最多填补1048576个数组元_array补充到一定长度

CSS学习笔记 —— 盒模型_盒子模型实际宽度用加margin吗-程序员宅基地

文章浏览阅读162次。本文是作者本人学习过程中的笔记总结,如若文中有不正确,或需要补充的地方,欢迎在评论区中留言。1. width_盒子模型实际宽度用加margin吗

初学者的回归分析 - 第二部分_seaborn r2_score round(2)-程序员宅基地

文章浏览阅读337次。初学者的回归分析 - 第二部分使用基于树的算法(决策树、随机森林、XGboost)建立一个ML回归模型简介第2.1部分 建立机器学习管道∘ 第1步:收集数据∘ 第二步:将数据可视化(问自己这些问题并回答)∘ 第三步:清理数据∘ 第四步:訓練模型∘ 第五步:評估∘ 第六步:使用hyperopt进行超参数调整∘ 第七步:选择最佳模型和预测结果第2.2部分:分析ML算法∘ 什么是决策树?∘ 什么是随机森林?∘ 什么是极限梯度提升法?(XGBoost)∘ 决策树 vs 随机森林 v_seaborn r2_score round(2)

随便推点

ACM基础:贪心之背包问题knapsack_贪心背包问题伪代码-程序员宅基地

文章浏览阅读615次,点赞2次,收藏3次。文章目录一、背包问题1.描述2.难度划分三、简单:分数背包问题(Fractional knapsack)1.思路2.伪代码3.c++实现四、难:0-1背包问题(0-1 knapsack)一、背包问题1.描述小偷抢劫商店,发现n件物品,物品i价值viv_ivi​美元,重量为wiw_iwi​磅,小偷在背包中最多只能携带W磅重量,但他想尽可能多地携带贵重物品。他应该带哪些物品?问题符号:n..._贪心背包问题伪代码

清华大学王青计算机系,清华大学王青教授到广西大学指导专业建设-程序员宅基地

文章浏览阅读217次。6月3日,教育部大学物理教学指导委员会主任委员、清华大学教授王青到广西大学,对物理学院专业建设进行指导。上午,物理学院负责人以及专业负责人分别作了关于学院一流专业建设思路、物理电子创陪班教学计划、物理专业培养计划和天文精英班办学特色、电子科学与技术专业培养计划和卓越工程师培养思路的报告,王青教授听取报告后,肯定了物理学院在专业建设方面做出的成绩,并给出有建设性的意见和建议。随后,王青教授作题为“量..._清华大学数字化研究所王青

layui数据表格之运用laypage分页的前端代码_layui-v1.0.9_rls 调用laypage-程序员宅基地

文章浏览阅读290次。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><!DOCTYPE html&._layui-v1.0.9_rls 调用laypage

图片与图片上下之间有空隙的解决方法_上下图片之间的间距不同-程序员宅基地

文章浏览阅读3k次。首先排除代码之间的换行符<br>,出现这个问题是因为图片为内联元素,有文字特性,默认存在间隙,所以会出现空白部分。可以将图片设置为block元素。img{ display:block;}还有种方法就是给父级设置fontsize:0,logo先不设置block转自:https://www.fengjinwei.com/blog-847722.html..._上下图片之间的间距不同

Kafka 配置信息解读_kafka configuration property queue.buffering.max.k-程序员宅基地

文章浏览阅读257次。1. Broker 配置信息 属性 默认值 描述 broker.id 必填参数,broker的唯一标识 log.dirs /tmp/kafka-logs Kafka数据存放的目录。可以指定多个目录,中间用逗号分隔,..._kafka configuration property queue.buffering.max.kbytes is a producer proper

wangeditor: 上传图片+上传视频+上传附件(自定义)完整使用_wangeditor上传图片-程序员宅基地

文章浏览阅读1.6w次,点赞6次,收藏33次。wangeditor: 上传图片+上传视频+上传附件(自定义)完整使用一:项目需求:①角色为管理员可以新增编辑文章 + ②点击可以看文章详情 +③ 角色为管理员可以修改编辑文章二:效果:①角色为管理员可以新增编辑文章步骤:①下载安装相关依赖 npm i wangeditor --save②引入③初始化创建编辑器代码中的initialEditor函数④自定义上传附件按钮主要思路:在编辑器上增加新的菜单按钮 --》实例化按钮 --》结合an..._wangeditor上传图片

推荐文章

热门文章

相关标签