- 浏览: 452453 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
进退取舍:
谢谢,这个用上了!!
Java 一个线程池的示例 -
pb_water:
感谢楼主,打算买楼主的书,支持一下,楼主功德无量
JavaScript内核系列第0版整理稿下载 -
lancezhcj:
有图会直观的多呢,再摸索摸索
有限自动机与建模 -
hsmsyy:
这里应该是原创了吧,楼主我觉得闭包的作用:实现面向对象。有待商 ...
JavaScript内核系列 第7章 闭包 -
wll52:
在应用退出之前,需要释放连接 con.disconnect() ...
使用smack与GTalk通信
Python是一个神奇的语言,上手极快,而且可以找到很多写的非常优秀的模块。这几天在给单位做CSS Sprites时,需要将一些图片先进行缩略,然后拼成一张大图,这样虽然数据量的传输没有降低,但是可以减少链接请求数,从而提高WEB服务的速度。
一时没有找到顺手的图形处理工具,(photoshop, GIMP太专业,而且体积太大,如果为了处理几百张图片就要装,未免浪费)于是自己用python写了一个,其实我学习python一共花的时间不过5小时,关于pil中的使用方法大部分来自pil的handbook,不过很快就完成了任务,顺便记录一下。
思路很简单:
遍历一个文件夹中的所有指定格式的图片,并将其resize,最后将这些resize过的图片对象粘贴到一个大的image上,并保存。
新生成的大图有两种形式,一种是竖直排列,一种是水平排列。这两种我都做了一下。下面是代码:
import Image import glob import os # vertical iconify the given image def viconify(path=".\\", ext="jpg", size=(16, 16)): src = path + "*." + ext mode = "RGBA" width = size[0] height = len(glob.glob(src))*size[1] target = Image.new(mode, (width, height)) currentHeight = 0 step = size[1] for infile in glob.glob(src): img = Image.open(infile) img = img.resize(size) if img.mode != mode: img = img.convert(mode) target.paste(img, (0, currentHeight)) currentHeight += step targetFile = "targetVer" + str(width) + "_" + str(height) + "." + ext print "target name = ", targetFile target.save(targetFile); # horizontal iconify the given image def hiconify(path=".\\", ext="jpg", size=(16,16)): f = path+"*."+ext mode = "RGBA" width = len(glob.glob(f))*size[0] height = size[1] target = Image.new(mode, (width, height)) currentLeft = 0 step = size[0] for infile in glob.glob(f): img = Image.open(infile) img = img.resize(size) if img.mode != mode: img = img.convert(mode) target.paste(img, (currentLeft,0)) currentLeft += step targetFile = "targetHor" + str(width) + "_" + str(height) + "." + ext print "target name = ", targetFile target.save(targetFile); # for test only hiconify("picLib3\\", "png", (32,32)) viconify("picLib3\\", "png", (32,32))
要注意的地方就是最后两行的测试函数,我用的都是png图片,Jpg也做了测试,可以正常运行。其他的格式没有测试,如果有问题,可以讨论。我用的是skype的自带的一些icon做的测试,如果有侵权嫌疑,请及时通知,呵呵。
python就是简单,但是借助一些外部的包,就可以快速的完成很多需求。通过一些简单的例子,大概可以归纳出python的一些特点,而这些特点都是我个人感兴趣的所在,现在大概列一下,大家可以参考
- 弱类型,(列表,元组等)
- 函数式变成(谁说函数式变成是学院派?)
- 面向对象
- 强大的模块化
- 优秀的外部支持(和其他语言的接口)
我对javascript的函数式变成做了一些研究,发现它跟python有很多相似之处,同时js要简单一些。有机会把我学习javascript的函数式编程的一些体会也贴出来,今天就先睡觉了。
评论
7 楼
abruzzi
2009-04-23
zjgzpc 写道
enhancer.enhance(1.5)
这一句会返回一个Image对象的引用(类似于句柄的一个东西),在返回的引用上做save操作即可
比如:
tempImg = enhancer.enhance(1.5)
tempImg.save('temp.jpg')
就是说,你已经用加强器处理过一次了,不过你又把中间结果丢弃了。
6 楼
zjgzpc
2009-04-22
谢谢楼主的解答,问题已经解决了!
不过,这次又得请教您新问题了,关于ImageEnhance模块的问题,现在我需要调用此模块下的2个类,进行先后的处理,问题是,第一段代码的效果没有处理。代码如下,请朋友指证,谢谢。
import Image,ImageEnhance
im = Image.open("image.jpg")
im.thumbnail((190,160),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(im)
enhancer.enhance(1.5)
enhancer2 = ImageEnhance.Sharpness(im)
enhancer2.enhance(1.0).save("new.jpg")
不过,这次又得请教您新问题了,关于ImageEnhance模块的问题,现在我需要调用此模块下的2个类,进行先后的处理,问题是,第一段代码的效果没有处理。代码如下,请朋友指证,谢谢。
import Image,ImageEnhance
im = Image.open("image.jpg")
im.thumbnail((190,160),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(im)
enhancer.enhance(1.5)
enhancer2 = ImageEnhance.Sharpness(im)
enhancer2.enhance(1.0).save("new.jpg")
5 楼
abruzzi
2009-04-20
zjgzpc 写道
楼主,您好,我是一名python新手。
我想请教个问题,如何在一段程序里,同时使用两个模块
并且第一个类处理图片后,第二个类接着处理,才进行保存?
一下是我测试的代码,请赐教下,感激不尽!
import Image,ImageEnhance
jay = Image.open("test.jpg")
jay.thumbnail((800,600),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(jay)
enhancer.enhance(1.5).save("new1.jpg")
这段代码总是报错
我想请教个问题,如何在一段程序里,同时使用两个模块
并且第一个类处理图片后,第二个类接着处理,才进行保存?
一下是我测试的代码,请赐教下,感激不尽!
import Image,ImageEnhance
jay = Image.open("test.jpg")
jay.thumbnail((800,600),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(jay)
enhancer.enhance(1.5).save("new1.jpg")
这段代码总是报错
1.代码我测了下,没有问题,可能出错的地方是你的图片本身有就没有800*600这么大。
2.在一段程序中使用两个模块,并且……,举个例子来说吧:
设有方法一(或者叫函数一)名叫A
输入为一个Image对象,输出为处理过的Image对象
方法二叫B
输入为一个Image对象,输出为处理过的Image对象
则可以这样使用:
A(B(image)).save(filename);
其中,image是一个Image对象的引用,filename是一个新的文件名的字符串。
4 楼
zjgzpc
2009-04-20
楼主,您好,我是一名python新手。
我想请教个问题,如何在一段程序里,同时使用两个模块
并且第一个类处理图片后,第二个类接着处理,才进行保存?
一下是我测试的代码,请赐教下,感激不尽!
import Image,ImageEnhance
jay = Image.open("test.jpg")
jay.thumbnail((800,600),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(jay)
enhancer.enhance(1.5).save("new1.jpg")
这段代码总是报错
我想请教个问题,如何在一段程序里,同时使用两个模块
并且第一个类处理图片后,第二个类接着处理,才进行保存?
一下是我测试的代码,请赐教下,感激不尽!
import Image,ImageEnhance
jay = Image.open("test.jpg")
jay.thumbnail((800,600),Image.ANTIALIAS)
enhancer = ImageEnhance.Color(jay)
enhancer.enhance(1.5).save("new1.jpg")
这段代码总是报错
3 楼
范三山
2009-01-08
用python真的很爽,学起来也非常快
2 楼
abruzzi
2009-01-08
blustc 写道
楼主的快速学习能力和运用能力另人钦佩
呵呵,其实不是我学得快,主要原因是python设计的太好,上手极快(如果对javascript之类的弱类型语言有些接触),而且有很多牛人和组织写的模块,函数库等。很适合做一些繁琐,没有顺手工具的工作。
1 楼
blustc
2009-01-08
楼主的快速学习能力和运用能力另人钦佩
发表评论
-
JavaScript内核系列 第15章 服务器端的JavaScript
2012-02-12 21:39 2326第15章已经在icodeit上发布,这一章分为上/下两篇,请朋 ... -
使用vim开发python及graphviz绘图
2011-12-23 14:49 6458基本需求 使用vim中的autocmd命令可以很容易的将正在 ... -
Java脚本技术应用实例
2011-01-22 11:24 4269前言 一直以来都很喜欢可以自由扩展的软件,这一点应该已经在很 ... -
可编程计算器(phoc)的设计与实现
2011-01-17 11:34 1983前言 借助JavaScript脚本 ... -
函数式编程(javascirpt)
2009-04-18 22:18 1264前言 Javascript,有人称 ... -
C和指针
2009-05-21 23:15 1117前言 指针是C的灵魂,正是指针使得C存在了这么多年,而且将长 ... -
C和指针(续)
2009-05-25 23:41 1360前言 上一篇《C和指针》可能对关于C和指针的有些内容没有说透 ... -
有限自动机与建模
2009-06-06 10:48 1786前言 在学校学程序设计语言的时候,能接触到的所有例子没有一个 ... -
事件和监听器
2009-06-21 22:06 1437前言 事件监听器是经 ... -
基于总线的消息服务(BBMS)的设计与实现
2009-07-25 22:19 1365前言 异步事件的通知机制在比较有规模的软件设计中必然会有涉及 ... -
JavaScript内核系列 第9章 函数式的Javascript
2010-05-13 19:20 3788第九章 函数式的Javascript 要说Ja ... -
JavaScript内核系列 第8章 面向对象的JavaScript(下)
2010-05-06 09:40 3673接上篇:JavaScript内核系列 第8章 面向对象的Jav ... -
JavaScript内核系列 第8章 面向对象的JavaScript(上)
2010-05-06 09:26 2906第八章 面向对象的 Javascript ... -
JavaScript内核系列 第7章 闭包
2010-05-04 08:48 3874第七章 闭包 闭包向来给包括JavaScript程序 ... -
JavaScript内核系列 第6章 正则表达式
2010-04-27 19:44 4050第六章 正则表达式 正则表达式是对字符串的结构 ... -
JavaScript内核系列 第5章 数组
2010-04-24 15:17 4531第五章 数组 JavaScript的数组也是一个比较 ... -
Swing小应用(Todo-List)之三
2010-04-22 20:47 2136前言 去年9月份开发的那个小工具sTodo,只是做到了能用, ... -
JavaScript内核系列 第4章 函数
2010-04-18 17:31 5095第四章 函数 函数,在C语言之类的过程式语言中 ... -
JavaScript内核系列 第3章 对象与JSON
2010-04-12 09:12 6134第三章 对象与JSON JavaScript对象与传 ... -
JavaScript内核系列 第2章 基本概念
2010-04-03 19:44 5692第二章 基本概念 ...
相关推荐
Python 图像处理 Python 图像处理是使用 Python 语言进行图像处理的技术。...Python 图像处理技术使用 Python 语言和 PIL 软件包提供了一个强大且灵活的图像处理平台,可以满足各种图像处理需求。
Python在图像处理方面的应用主要依赖于其强大的第三方库支持,如PIL(Python Imaging Library)等。 #### 二、Python与图像处理 尽管MATLAB以其内置的图像处理工具箱而闻名,并且在复杂图像处理任务中表现卓越,但...
Python在图像处理领域的应用广泛,尤其...总之,Python在图形图像处理领域的强大功能和易用性使其成为理想的学习和实践工具。通过实际的毕业设计,学生能够将理论知识转化为实践技能,同时提升编程能力和软件工程素养。
### Python 图像处理库指南:Python Imaging Library (PIL) #### 一、引言 Python Imaging Library(简称PIL)是Python编程语言中一个强大的图像处理库,它为用户提供了一系列的功能来创建、修改以及转换各种格式...
在本项目中,我们主要探讨的是如何利用Python的PyQt5库构建图形用户界面(GUI),结合PIL(Python Imaging Library)库实现批量图像处理,包括重命名和添加水印的功能。这是一份非常适合初学者的实践教程,因为它...
在Python中进行图像处理是一项广泛应用于许多领域的技术,包括但不限于科学研究、医学成像、艺术创作、数据可视化和安全监控。本课程设计旨在帮助学生通过实际项目深入理解和掌握计算机图形学和数字图像处理的基础...
Python PIL,全称为Python Imaging Library,是Python编程语言中用于图像处理的核心库。它提供了丰富的图像处理功能,包括但不限于打开、操作和保存多种文件格式,以及进行色彩转换、图像裁剪、旋转、滤波等图像操作...
1. **PIL(Python Imaging Library)**:这是Python中最基础的图像处理库,提供了丰富的功能,如读取、写入、显示和操作各种图像格式。PIL库包括了图像的基本操作,如裁剪、旋转、调整大小、色彩转换等。 2. **...
PIL 库(Python Imaging Library)是一个功能强大的图像处理库,可以用来读取、处理和保存图像。通过使用 PIL 库,我们可以读取图片的像素值并对其进行处理。 读取图片的像素值 使用 PIL 库读取图片的像素值可以...
总之,"python图形处理11"涵盖了Python图像处理的多个方面,从基本的图像操作到复杂的计算机视觉任务,结合实例和库的使用,可以帮助开发者提升在图形处理领域的技能。通过学习这些内容,你可以掌握创建、分析和修改...
在图像处理领域,OpenCV(开源计算机视觉库)是一个强大的工具,尤其在Python编程语言中,它提供了丰富的功能,使得图像分析和处理变得简单。本主题聚焦于如何使用OpenCV-Python来去除图像中的浅色水印。水印通常被...
Python3.4 64位的PIL,全称为Python Imaging Library,是Python编程语言中的一个图像处理库。它提供了大量的图像处理功能,包括打开、修改和保存多种图像文件格式,以及进行基本的颜色操作、图像滤波、几何变换等。...
在IT领域,图形图像处理是一项基础且至关重要的技术,它涉及到计算机如何理解、操作和展示图像数据。在“图形图像处理.zip”这个压缩包中,很显然,它包含了一些关于图像处理的代码或工具,可能允许用户进行图像大小...
在这个主题中,我们将深入探讨如何使用Python进行图像处理,以及它在人工智能(AI)和后端开发中的应用。 首先,让我们了解几个关键术语。机器学习是计算机科学的一个分支,它涉及到通过数学和统计方法从现有数据中...
数字图像处理课程是综合多领域交叉的学科,其在机器视觉、自动控制、虚拟现实等领域中已...通过使用Python和其丰富的扩展库,如OpenCV和NumPy,学生能够更加高效地实现图像处理算法,并加深对数字图像处理原理的理解。
通过Python进行图像处理,学生可以深入理解计算机图形学和数字图像处理的基本原理,掌握关键算法,并提升编程能力。以下是一些关于Python图像处理的知识点: 1. **基本概念**: - 计算机图形学:涉及创建、修改、...
总之,这个基于Python的图像处理系统涵盖了Python图像处理的核心技术,包括基础库的使用、高级图像处理算法的实现、GUI编程以及程序打包。无论是学习还是实际应用,都能为用户带来宝贵的实践经验。
PIL库可以与其他Python库(如NumPy、OpenCV)结合使用,进行更复杂的图像处理任务。例如,NumPy数组可以直接转换为PIL图像对象,方便进行科学计算和分析。 7. **错误处理和版本兼容性** 在Mac上使用PIL时,需要...
1. **概览**:这部分介绍了PIL的基本概念,包括支持的图像格式、图像处理功能以及如何在Python环境中使用PIL。 2. **图像归档处理**:涵盖如何打开、保存和读取不同格式的图像文件。 3. **图像显示**:讲解如何在...
这些是"python-》pil selenium hook"主题中的关键知识点,它们涉及到Python 2.7的使用、图像处理、Web自动化测试以及在两者之间建立交互的方式。理解并熟练掌握这些概念,将有助于你构建更复杂的自动化解决方案。