使用 Python 切割图片

  刚好我有张 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 写小工具了:)

时间: 2024-10-25 00:01:37

使用 Python 切割图片的相关文章

两种方法实现用CSS切割图片只取图片中一部分

切割图片这里不是真正的切割,只是用CSS取图片中的一部分而已,主要有两种方式,一是做为某一元素的背景图片,二是用img元素的属性.下面有个不错的示例,大家可以参考下 切割图片这里不是真正的切割,只是用CSS取图片中的一部分而已.这样做的好处就是减少了打开网页时请求图片的次数.主要有两种方式,一是做为某一元素的背景图片,二是用img元素的属性. 方法一: 用CSS中元素的background : background-color || background-image || background-

Android 中通过切割图片创建人物行走动画

以前一直使用序列图片来实现动画效果,造成空间的极大浪费,所以想要尝试下切割图片来实现动画. 如图所示,是由66rpg纸娃娃系统生成的角色行走图.本程序必须实现将人物的整体图片切割后存入4x4的数组来动态加载. 在主布局文件中设立4个ImageView,分别用来显示角色在不同角度下的行走动作.然后在主活动文件中: public class MainActivity extends ActionBarActivity {private ImageView myImageView,myImageVie

python实现图片爬虫

#encoding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from sgmllib import SGMLParser import re import urllib class URLLister(SGMLParser): def start_a(self, attrs): url = [v for k, v in attrs if k=='href'] if url : urll = url[0] else :

【跟我一起学Unity3D】代码中切割图片并且加载帧序列动画

在Cocos2dx中,对大图的处理已经封装好了一套自己的API,但是在Unity3D中貌似没有类似的API,或者说我没找到.不过这也在情理之中,毕竟Unity3D是做3D的,要切割图片的地方还是很少的. 因为我用Unity3D主要是用于做2D游戏的(PS:很蛋疼吧?我也觉得),所以就不得不考虑切图和播放序列帧这两个在2D上常见的功能了,下面废话不多说.我的任务是把下面这张图切割成16块,并且按照动画的序列播放出来. 查Unity3D的使用手册的过程中,我发现了一个类:Texture2D,他是继承

python获取图片base64编码的例子

用python语言获得图片的Base64编码. #!/usr/bin/env python # -*- coding: utf-8 -*- # www.jbxue.com import os, base64 icon = open('ya.png','rb') iconData = icon.read() iconData = base64.b64encode(iconData) LIMIT = 60 liIcon = [] while True: sLimit = iconData[:LIMI

用Python更改图片尺寸大小

1.PIL包推荐Pillow. 2.源码: #encoding=utf-8 #author: walker #date: 2014-05-15 #function: 更改图片尺寸大小 import os import os.path from PIL import Image ''' filein: 输入图片 fileout: 输出图片 width: 输出图片宽度 height:输出图片高度 type:输出图片类型(png, gif, jpeg...) ''' def ResizeImage(f

python 读取图片的尺寸、分辨率

#需要安装PIL模块 #encoding=gbk#-------------------------------------------------------------------------------# Name: picRead# Purpose:## Author: wangchao## Created: 27/06/2014# Copyright: (c) wangchao 2014# Licence: <your licence>#-----------------------

Android调用相册拍照控件实现系统控件缩放切割图片

android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家 package cn.m15.test; import java.io.ByteArrayOutputStream;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Ur

Optipng,jpegoptim应用,用python实现图片压缩,让你的网站变得更快

compress images according to google suggestion. 1.环境:ubuntu12.04 . python 2.7.3 2.工具:optipng .jpegoptim. 3.安装工具:a.    sudo apt-get install optipng b.    sudo apt-get install jpegoptim 4. a. 使用方法: optipng    /filepath/filename.png. 一个例子: optipng  /hom