<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>右舷 &#187; python</title>
	<atom:link href="http://www.laihj.net/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.laihj.net</link>
	<description>list(linux,emacs,旅行,读书,andriod)</description>
	<lastBuildDate>Tue, 20 Jul 2010 01:52:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用Dropbox搭配MoinMoin建立个人的Wiki</title>
		<link>http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/</link>
		<comments>http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 11:07:08 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[moinmoin]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.laihj.net/?p=649870</guid>
		<description><![CDATA[什么是MoinMoin
MoinMoin是一个基于python的wiki程序，有一个可利用的特点是不用数据库，所有数据都是文本。
它的desktop版本安装和介绍如下：
http://moinmo.in/DesktopEdition
什么是Dropbox
Dropbox是一个好用的文件备份和共享工具，现在有for win,mac和linux版本。它的用法是在系统中建立一个共享文件夹。你对这个文件夹的所有修改都会被同步到Dropbox提供的网络空间上，这个同 步的过程是自动的，不需要用户插手。现在Dropbox给初级用户的空间是2G。
https://www.dropbox.com/
怎么用？
简单的说，就是利用Dropbox的文件同步功能，将moinmoin的数据文件放到Dropbox共享文件夹中，以实现多台机器上的moinmoin DeskTop共享同一个数据源的目的。
实现起来也很简单，moinmoin的配置文件wikiconfig.py中，直接将data_dir,data_underlay_dir两个参数修改为Dropbox的共享文件夹即可。

这样，当你在一台机器上修改了你的wiki之后，本机的Dropbox共享文件夹先被修改，然后这个修改会被即时同步到Dropbox上，之后其它所有共享了这个文件夹的机器上的相应文件就会同时修改。于是在那台机器上打开wiki，就可以看到最新的修改了。
Dropbox 本身是一个非常好的同步工具。所有跟文件相关的东西都可以同步，比如firefox的profile文件夹，使用这样方法，同样可以实现不同机器上的 firefox配置同步的问题。比如同步书签，当然，firefox有delicious.com和Xmarks可用，但是由于众所周知的原因，它们并不 是什么时候都可以访问的。
Related Posts[pil-handbook翻译]使用指南-5(1)
[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]使用指南-1(2)
[pil-handbook翻译]Python Imaging Library 概览(1)
[PY]玩pythonchallenge要复盘(0)
[PY]python中的OO(0)
[PY]module的问题(0)
Recent Commentswoodboy : lz，能不能写一下具体的方法，最近正想找一个可以同步的本地wiki（在线wiki服务，不是功能差就是...
]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium;">什么是MoinMoin</span></p>
<p>MoinMoin是一个基于python的wiki程序，有一个可利用的特点是不用数据库，所有数据都是文本。<br />
它的desktop版本安装和介绍如下：<br />
<a title="http://moinmo.in/DesktopEdition" href="http://moinmo.in/DesktopEdition">http://moinmo.in/DesktopEdition</a></p>
<p><span style="font-size: medium;">什么是Dropbox</span></p>
<p>Dropbox是一个好用的文件备份和共享工具，现在有for win,mac和linux版本。它的用法是在系统中建立一个共享文件夹。你对这个文件夹的所有修改都会被同步到Dropbox提供的网络空间上，这个同 步的过程是自动的，不需要用户插手。现在Dropbox给初级用户的空间是2G。<br />
<a title="https://www.dropbox.com/" href="https://www.dropbox.com/">https://www.dropbox.com/</a></p>
<p><span style="font-size: medium;">怎么用？</span></p>
<p>简单的说，就是利用Dropbox的文件同步功能，将moinmoin的数据文件放到Dropbox共享文件夹中，以实现多台机器上的moinmoin DeskTop共享同一个数据源的目的。</p>
<p>实现起来也很简单，moinmoin的配置文件wikiconfig.py中，直接将data_dir,data_underlay_dir两个参数修改为Dropbox的共享文件夹即可。</p>
<p><img class="alignleft size-full wp-image-649871" title="2009-11-25-183736_828x284_scrot" src="http://www.laihj.net/wp-content/uploads/152/15244/2009/11/2009-11-25-183736_828x284_scrot.png" alt="2009-11-25-183736_828x284_scrot" width="828" height="284" /></p>
<p>这样，当你在一台机器上修改了你的wiki之后，本机的Dropbox共享文件夹先被修改，然后这个修改会被即时同步到Dropbox上，之后其它所有共享了这个文件夹的机器上的相应文件就会同时修改。于是在那台机器上打开wiki，就可以看到最新的修改了。</p>
<p>Dropbox 本身是一个非常好的同步工具。所有跟文件相关的东西都可以同步，比如firefox的profile文件夹，使用这样方法，同样可以实现不同机器上的 firefox配置同步的问题。比如同步书签，当然，firefox有delicious.com和Xmarks可用，但是由于众所周知的原因，它们并不 是什么时候都可以访问的。</p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul><li><a class="commentor" href="" >woodboy</a> : <a class="comment_content" href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/#comment-1090" title="View the entire comment by woodboy" >lz，能不能写一下具体的方法，最近正想找一个可以同步的本地wiki（在线wiki服务，不是功能差就是...</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]使用指南-5</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 02:26:25 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5.html</guid>
		<description><![CDATA[更多图像载入方法 为了叙述的方便，Image模块里的open函数经常被用来打开像文件。在多数情况下，你只需要传给它一个文件名作为参数即可:
im = Image.open("lena.ppm")
如果一切顺利，返回的是一个Image实例，否则，将会引起一枚IOError异常。
你也可以用一个类文件的实列来代替文件名。这个实例必须实现read, seek 和tell方法，并以binary模式打开.
从一个打开的文件流读取:
fp = open("lena.ppm", "rb")
im = Image.open(fp)
从一个字节流数据读取图像，使用StringIO类 :
从一个字节流读取:
import StringIO
im = Image.open(StringIO.StringIO(buffer))
注意，图像库可以在读取图像文件头之前就回朔图像(使用seek(0)),另外，seek也可以用于那些已经被读取的(使用load的方法)图像。如果图像被包含在一个大文件中，比如tar包,你可以使用ContainerIO或TarIO来读取它。
从一个TAR包读取
import TarIO

fp = TarIO.TarIO("Imaging.tar", "Imaging/test/lena.ppm")
im = Image.open(fp)
控制编码
    一些编码器允读你在读入图像之后对它进行操作。这个特性通常用于创建缩略图(效率高于图像质量)和使用单色激光打印机（仅需要一个灰度图）时.
    draft方法操作的是一个打开而未载入的图像，因此它只能提供尽可能接近给定的模式和大小的结果。它是通过重新配置图像编码来完成这一功能的。
    用drft模式读取:
im = Image.open(file)
print "original =", im.mode, im.size

im.draft("L", (100, 100))
print "draft =", im.mode, im.size
    打印出的信息大概是这样:
original = RGB (512, 512)
draft = L (128, 128)
请注意，这里的结果图像并没有跟给定的模式与大小完全吻合。如果要确定结果不大于给定的大小，需使用thumbnail方法.
上一页 PIL目录
注:后面是一些概念和库说明什么的,没啥好翻  翻译到此为此
原文链接
Related Posts[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]Python Imaging Library 概览(1)
[pil-handbook翻译]使用指南-1(2)
用Dropbox搭配MoinMoin建立个人的Wiki(1)
[Founders At Work]Firefox创始人Blake Ross -2(0)
[PY]玩pythonchallenge要复盘(0)
[PY]python中的OO(0)
[PY]module的问题(0)
Recent [...]]]></description>
			<content:encoded><![CDATA[<p><strong style="color: #0b5394"><font size="5">更多图像载入方法 </font></strong>为了叙述的方便，Image模块里的open函数经常被用来打开像文件。在多数情况下，你只需要传给它一个文件名作为参数即可:</p>
<pre style="margin-left: 40px">im = Image.open("lena.ppm")</pre>
<p>如果一切顺利，返回的是一个Image实例，否则，将会引起一枚IOError异常。</p>
<p>你也可以用一个类文件的实列来代替文件名。这个实例必须实现read, seek 和tell方法，并以binary模式打开.</p>
<p><font style="color: #000000" size="2">从一个打开的文件流读取</font>:</p>
<pre style="margin-left: 40px">fp = open("lena.ppm", "rb")
im = Image.open(fp)</pre>
<p>从一个字节流数据读取图像，使用StringIO类 :</p>
<p>从一个字节流读取:</p>
<pre style="margin-left: 40px">import StringIO
im = Image.open(StringIO.StringIO(buffer))</pre>
<p>注意，图像库可以在读取图像文件头之前就回朔图像(使用seek(0)),另外，seek也可以用于那些已经被读取的(使用load的方法)图像。如果图像被包含在一个大文件中，比如tar包,你可以使用ContainerIO或TarIO来读取它。</p>
<p>从一个TAR包读取</p>
<pre style="margin-left: 40px">import TarIO

fp = TarIO.TarIO("Imaging.tar", "Imaging/test/lena.ppm")
im = Image.open(fp)</pre>
<h3><a name="TOC-1"></a><font style="color: #0b5394" size="5">控制编码</font></h3>
<p><span>    </span>一些编码器允读你在读入图像之后对它进行操作。这个特性通常用于创建缩略图(效率高于图像质量)和使用单色激光打印机（仅需要一个灰度图）时.</p>
<p><span>    </span>draft方法操作的是一个打开而未载入的图像，因此它只能提供尽可能接近给定的模式和大小的结果。它是通过重新配置图像编码来完成这一功能的。</p>
<pre><span>    </span>用drft模式读取:</pre>
<pre style="margin-left: 40px">im = Image.open(file)
print "original =", im.mode, im.size

im.draft("L", (100, 100))
print "draft =", im.mode, im.size</pre>
<p><span>    </span>打印出的信息大概是这样:</p>
<pre style="margin-left: 40px">original = RGB (512, 512)
draft = L (128, 128)</pre>
<p>请注意，这里的结果图像并没有跟给定的模式与大小完全吻合。如果要确定结果不大于给定的大小，需使用<strong>thumbnail</strong>方法.</p>
<p><a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-4.html">上一页</a> <a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a></p>
<p>注:后面是一些概念和库说明什么的,没啥好翻  翻译到此为此</p>
<p><a href="http://www.pythonware.com/library/pil/handbook/index.htm">原文链接</a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/" title="[Founders At Work]Firefox创始人Blake Ross -2 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -2</a>(0)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]使用指南-4</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 08:01:24 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4.html</guid>
		<description><![CDATA[图像序列(动画)
    PIL包含对图像序列（也叫动画格式）的基本支持。所支持的序列图格式包括FLI/FLC, GIF和一部分还在试验中的格式。TIFF同样可以包含超过一帧的图像。
    当你打开一个图像序列文件，PIL自动载入这个序列的第一帧。
    你可以使用seek和tell方法在不同的帧之间移动:
Example: Reading sequences
import Image
im = Image.open(&#8221;animation.gif&#8221;)
im.seek(1) # skip to the second frame
try:
&#160;
while 1:
im.seek(im.tell()+1)
# do something to im
except EOFError:
pass # end of sequence
    如这个例子所示，当序列结束时你将得到一个EOFError异常。
    注意，在当前库版本中的大部分方法都只允许你称动到下一帧（如上面的例子所示）。如果要回溯图像，你可以重新打开.
    下面这个iterator类使你可以用for语名来循环图像序列:
Example: A sequence iterator class
class ImageSequence:
def __init__(self, im):
&#160;
self.im = im
def __getitem__(self, ix):
&#160;
try:
&#160;
&#160;
if ix:
&#160;
self.im.seek(ix)
return self.im
except EOFError:
&#160;
raise IndexError # end of sequence
for frame in ImageSequence(im):
# &#8230;do something to frame&#8230;
Postscript [...]]]></description>
			<content:encoded><![CDATA[<p><font style="color: #0b5394" size="5"><strong>图像序列(动画)</strong></font></p>
<p><span>    </span>PIL包含对图像序列（也叫动画格式）的基本支持。所支持的序列图格式包括FLI/FLC, GIF和一部分还在试验中的格式。TIFF同样可以包含超过一帧的图像。<br />
<span>    </span>当你打开一个图像序列文件，PIL自动载入这个序列的第一帧。<br />
<span>    </span>你可以使用seek和tell方法在不同的帧之间移动:</p>
<p style="margin-left: 40px">Example: Reading sequences<br />
import Image<br />
im = Image.open(&#8221;animation.gif&#8221;)<br />
im.seek(1) # skip to the second frame<br />
try:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">while 1:</p>
<p style="margin-left: 40px">im.seek(im.tell()+1)<br />
# do something to im<br />
except EOFError:</p>
<p style="margin-left: 40px">pass # end of sequence<br />
<span>    </span>如这个例子所示，当序列结束时你将得到一个EOFError异常。<br />
<span>    </span>注意，在当前库版本中的大部分方法都只允许你称动到下一帧（如上面的例子所示）。如果要回溯图像，你可以重新打开.</p>
<p><span>    </span>下面这个iterator类使你可以用for语名来循环图像序列:</p>
<p style="margin-left: 40px">Example: A sequence iterator class<br />
class ImageSequence:<br />
def __init__(self, im):</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">self.im = im</p>
<p>def __getitem__(self, ix):</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">try:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">if ix:</p>
<p style="margin-left: 120px">&nbsp;</p>
<p style="margin-left: 40px">self.im.seek(ix)<br />
return self.im<br />
except EOFError:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 120px">raise IndexError # end of sequence<br />
for frame in ImageSequence(im):</p>
<p style="margin-left: 40px"># &#8230;do something to frame&#8230;</p>
<p><strong style="color: #0b5394"><font size="5">Postscript 打印</font></strong></p>
<p>The Python Imaging Library includes functions toprint images, text and graphics on<br />
Postscript printers. Here&#8217;s a simple example:<br />
PIL包含在Postscript 打印机上打印图像,文本和图型所需的函数,以下是简单例子:<br />
Example: Drawing Postscript<br />
import Image<br />
import PSDraw<br />
im = Image.open(&#8221;lena.ppm&#8221;)<br />
title = &#8220;lena&#8221;<br />
box = (1*72, 2*72, 7*72, 10*72) # in points<br />
ps = PSDraw.PSDraw() # default is sys.stdout<br />
ps.begin_document(title)<br />
# draw the image (75 dpi)<br />
ps.image(box, im, 75)<br />
ps.rectangle(box)<br />
# draw centered title<br />
ps.setfont(&#8221;HelveticaNarrow-Bold&#8221;, 36)<br />
w, h, b = ps.textsize(title)<br />
ps.text((4*72-w/2, 1*72-h), title)<br />
ps.end_document()</p>
<p align="center"> <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E6%8C%87%E7%94%A8%E6%8C%87%E5%8D%97-3.html">下一页 </a><a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a> <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-5.html">下一页</a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/" title="[Founders At Work]Firefox创始人Blake Ross -2 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -2</a>(0)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]指用指南-3</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 03:37:37 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3.html</guid>
		<description><![CDATA[颜色转换
    使用convert函数，PIL让你可以在不同的图像模式之间转换。
Example: 转换模式
im = Image.open(&#8221;lena.ppm&#8221;).convert(&#8221;L&#8221;)
    图像库支持所有图像模式到 &#8220;L&#8221;和&#8221;RGB&#8221;模式之间的转换。如果需要在其它两种模式之间转化，你可以使用一个中间图像(一般是一枚&#8221;RGB&#8221;图像)
图像增强
    PIL提供了许多方法和模块来支持图像增强。
    滤镜
    ImageFilter模块预置了一系列图像增强滤镜与filter方法一起使用。
    Example: 应用滤镜
import ImageFilter
out = im.filter(ImageFilter.DETAIL)
    象素操作
    point方法可以用来改变一个图像象素点的值。（例，图像对比操作)。在大多数情况下,一个函数需要一个参数来运行。
每个象素都可以依照以下函数进行处理：
Example: Applying point transforms

# multiply each pixel by 1.2
out = im.point(lambda i: i * 1.2)


    使用上述技术，你可以快速地在一枚图像上应用任何表达式。你也可以综合使用point和paste方法来选择性地修改一枚图像：
    Example: 处理单个颜色通道

# split the image into individual bands
source = im.split()
R, G, B = 0, 1, 2
# select regions where red is less than [...]]]></description>
			<content:encoded><![CDATA[<p><strong style="color: #0b5394"><font size="5">颜色转换</font></strong></p>
<p><span>    </span>使用convert函数，PIL让你可以在不同的图像模式之间转换。<br />
Example: 转换模式</p>
<p style="margin-left: 40px">im = Image.open(&#8221;lena.ppm&#8221;).convert(&#8221;L&#8221;)</p>
<p><span>    </span>图像库支持所有图像模式到 &#8220;L&#8221;和&#8221;RGB&#8221;模式之间的转换。如果需要在其它两种模式之间转化，你可以使用一个中间图像(一般是一枚&#8221;RGB&#8221;图像)</p>
<p><strong style="color: #0b5394"><font size="5">图像增强</font></strong><br />
<span>    </span>PIL提供了许多方法和模块来支持图像增强。<br />
<span>   <strong style="color: #0b5394"><font size="3"> </font></strong></span><strong style="color: #0b5394"><font size="3">滤镜</font></strong></p>
<p><span>    </span>ImageFilter模块预置了一系列图像增强滤镜与filter方法一起使用。<br />
<span>    </span>Example: 应用滤镜</p>
<p style="margin-left: 40px">import ImageFilter<br />
out = im.filter(ImageFilter.DETAIL)</p>
<p><font size="2"><strong style="color: #0b5394"><font size="3"><span>    </span>象素操作</font></strong><br />
</font><font size="2"><span>    </span>point方法可以用来改变一个图像象素点的值。</font>（例，图像对比操作)。在大多数情况下,一个函数需要一个参数来运行。<br />
每个象素都可以依照以下函数进行处理：<br />
<font size="2">Example: Applying point transforms<br />
</font></p>
<p style="margin-left: 40px"><font size="2"># multiply each pixel by 1.2<br />
out = im.point(lambda i: i * 1.2)<br />
</font></p>
<p><font size="2"><br />
<span>    </span>使用上述技术，你可以快速地在一枚图像上应用任何表达式。你也可以综合使用point和paste方法来选择性地修改一枚图像：<br />
<span>    </span>Example: 处理单个颜色通道<br />
</font></p>
<p style="margin-left: 40px"><font size="2"># split the image into individual bands<br />
source = im.split()<br />
R, G, B = 0, 1, 2<br />
# select regions where red is less than 100<br />
mask = source[R].point(lambda i: i 100 and 255)<br />
# process the green band<br />
out = source[G].point(lambda i: i * 0.7)<br />
# paste the processed band back, but only where red was 100<br />
source[G].paste(out, None, mask)<br />
# build a new multiband image<br />
im = Image.merge(im.mode, source)<br />
</font></p>
<p><font size="2"><span>    </span>注意创建蒙版(mask)的句法：<br />
</font></p>
<p style="margin-left: 40px"><font size="2">imout = im.point(lambda i: expression and 255)<br />
</font></p>
<p><font size="2"><span>    </span>Python只是判断决定可输出结果的那部分逻辑表达式，返回值则是</font><font size="2">expression</font>的结果。所以，如果上列的<font size="2">expression结果是false(0)，python将不再查看第二个操作数，而直接返回0，否则，返回255。</font><br />
<span>    </span>(有点像短路判断，只要运行的部份已足以决定结果了，那么剩下的部分就不看)<br />
<strong style="color: #0b5394"><font size="3"><span>    </span>增强</font></strong><br />
<span>    </span>更高级的图像增强，使用ImageEnhance module中的类.<br />
<span>    </span>一旦由图像创建出实例，一个enhancement对象可以很快速地试验各种不同设定。<br />
<span>    </span>你可以用这种方式调整图像的对比度，亮度，色平衡和锐度：<br />
<span>    </span>Example: Enhancing images<br />
import ImageEnhance<br />
enh = ImageEnhance.Contrast(im)<br />
enh.enhance(1.3).show(&#8221;30% more contrast&#8221;)</p>
<p align="center"><a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-2.html">上一页</a> <a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a> <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-4.html">下一页</a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/" title="[Founders At Work]Firefox创始人Blake Ross -2 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -2</a>(0)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]使用指南-2</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 01:22:50 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2.html</guid>
		<description><![CDATA[剪切，粘贴与合并图像
    Image类所包含的方法可以让你对图像的某个区域进行操作。取到图像的一个子区，可以使用crop方法。
    Example: 从图像中复制一小框
box = (100, 100, 400, 400)
region = im.crop(box)
    这个区域以一个四元组定义，其坐标表示为（左，上，右，下）.PIL使用一个以(0,0)代表左上角的坐标系统。同时也要注意坐标指向的位置是以像素标识，所以在上面这个例子中的区域刚好是300&#215;300像素。
    现在，这个图区可以做一些处理然后粘贴回去。
    Example: 处理一个子区，再贴回去
region = region.transpose(Image.ROTATE_180)
im.paste(region, box)
    当粘贴一个区域时，该区域的大小必须与给定的大小吻合，另外，粘贴区也不能延展到图像外面。但是，原始图像和粘贴区域的格式并不需要一致。如果它们不一致，粘贴域会自动进行转化。（在下方的颜色转换部分会有详细讨论）
    这里是另一个例子
    Example: Rolling an image
def roll(image, delta):
&#8220;Roll an image sideways&#8221;
xsize, ysize = image.size
delta = delta % xsize
if delta == 0: return image
part1 = image.crop((0, 0, delta, ysize))
part2 = image.crop((delta, 0, xsize, ysize))
image.paste(part2, (0, 0, xsize-delta, ysize))
image.paste(part1, [...]]]></description>
			<content:encoded><![CDATA[<p><strong style="color: #0b5394"><font size="5">剪切，粘贴与合并图像</font></strong><br />
<span>    </span>Image类所包含的方法可以让你对图像的某个区域进行操作。取到图像的一个子区，可以使用crop方法。<br />
<span>    </span>Example: 从图像中复制一小框</p>
<p style="margin-left: 40px">box = (100, 100, 400, 400)<br />
region = im.crop(box)</p>
<p><span>    </span>这个区域以一个四元组定义，其坐标表示为（左，上，右，下）.PIL使用一个以(0,0)代表左上角的坐标系统。同时也要注意坐标指向的位置是以像素标识，所以在上面这个例子中的区域刚好是300&#215;300像素。<br />
<span>    </span>现在，这个图区可以做一些处理然后粘贴回去。<br />
<span>    </span>Example: 处理一个子区，再贴回去</p>
<p style="margin-left: 40px">region = region.transpose(Image.ROTATE_180)<br />
im.paste(region, box)</p>
<p><span>    </span>当粘贴一个区域时，该区域的大小必须与给定的大小吻合，另外，粘贴区也不能延展到图像外面。但是，原始图像和粘贴区域的格式并不需要一致。如果它们不一致，粘贴域会自动进行转化。（在下方的颜色转换部分会有详细讨论）<br />
<span>    </span>这里是另一个例子<br />
<span>    </span>Example: Rolling an image</p>
<p style="margin-left: 40px">def roll(image, delta):</p>
<p style="margin-left: 40px">&#8220;Roll an image sideways&#8221;<br />
xsize, ysize = image.size<br />
delta = delta % xsize<br />
if delta == 0: return image<br />
part1 = image.crop((0, 0, delta, ysize))<br />
part2 = image.crop((delta, 0, xsize, ysize))<br />
image.paste(part2, (0, 0, xsize-delta, ysize))<br />
image.paste(part1, (xsize-delta, 0, xsize, ysize))<br />
return image</p>
<p><span>    </span>更进一步，使用一个可选参数，paste方法也可以实现透明蒙版效果。在这个蒙版中，值255表示这个粘贴图像在该位置完全不透明，值0意味着粘贴图像是完全透明的，而这之间的值则表示不同的透明度。<br />
<span>    </span>PIL 也使你可以操作一个多道道图像的单个颜色通道。比如一个RGB图像。split方法创建一个新的图像集，其中每一个图像包含量原始图像的一个颜色通道。 merge方法使用两个参数，一个是模式，一个是图像组，将图像组重新组成合一个新的图像。下面这个例子将三个颜色通道合成一个RGB图像：<br />
Example: 分割和合并颜色通道</p>
<p style="margin-left: 40px">r, g, b = im.split()<br />
im = Image.merge(&#8221;RGB&#8221;, (b, g, r))</p>
<p><strong><font style="color: #0b5394" size="5">几何变换</font></strong><br />
<span>    </span>图像库提供方法来缩放和旋转图像。前者需要以二元组的方式提供新的尺寸参数，后者则需要一个逆时针方向的角度。<br />
<span>    </span>Example: 简单几何变换。</p>
<p style="margin-left: 40px">out = im.resize((128, 128))<br />
out = im.rotate(45) # degrees counter-clockwise<br />
<span>    </span>将一枚图像旋转90度，既可以使用rotate方法，也可以使用transpose方法，后者同时也可以用于将一枚图像沿着它作重直或水平旋转。<br />
<span>    </span>Example: 变换一坨图像</p>
<p style="margin-left: 40px">out = im.transpose(Image.FLIP_LEFT_RIGHT)<br />
out = im.transpose(Image.FLIP_TOP_BOTTOM)<br />
out = im.transpose(Image.ROTATE_90)<br />
out = im.transpose(Image.ROTATE_180)<br />
out = im.transpose(Image.ROTATE_270)</p>
<p><span>    </span>使用transpose(ROTATE)，或选用相应的rotate操作，在结果和显示上并无不同。<br />
<span>    </span>更通用的图像变换方式可以使用transform方法。在后面的reference可以找到相关细节。</p>
<p align="center"><a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-1.html">上一页</a>  <a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a>  <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E6%8C%87%E7%94%A8%E6%8C%87%E5%8D%97-3.html">下一页</a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/" title="[Founders At Work]Firefox创始人Blake Ross -2 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -2</a>(0)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]使用指南-1</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 05:30:57 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1.html</guid>
		<description><![CDATA[使用Image类
    在PIL中最重要的类就是Image类，它在模块中以相同的名称定义。你可以用多种方式创建该类的实例：包括从文件中载放图像，处理其它图像所得，及从草稿中创建图像。
    从文件中裁入图像，使用Imag模块中的open函数。
&#62;&#62;&#62; import Image
&#62;&#62;&#62; im = Image.open(&#8221;lena.ppm&#8221;)
    如果成功，函数返回一个Image对象。现在，你可以使用实例属性来检视文件内容了。
&#62;&#62;&#62; print im.format, im.size, im.mode
PPM (512, 512) RGB
    format 属性标识出图像的类别,如果图像并不是从文件中读取,它的值会被设为None.size属性是一个二元组,内容包括图像的高和宽(以像素为单 位).mode属性定了的图像颜色通道数量及名字,同时也包括像素类型和深度.常见的模式比如&#8221;L&#8221;(luminance)代表灰度图,&#8221;RGB&#8221;是真彩色图像, 而&#8221;CMYK&#8221;则是打印图像.
    如果打开失败,则抛出IOError异常.
    一旦创建了一枚Image类的实例,你就可以使用这个类所定义的方法来处理和操作图像.举列来说,显示这一图像:
&#62;&#62;&#62; im.show()
    (标准版本的show并不是非常有效率,因为先将图像保存为临时文件,然后调用xv来显示它.如果你没有安装xv,它甚至可能无法使用.不过当它可用的时候,还是能够非常方便地调试与测试.)
    &#8211;译注,xv是Unix下的一个看图工具,在windows是,应该是调用系统默认的工具打开图像.
    接下来的部分,我们给出这个库中的一些不同函数的总览.
读写图像
    PIL支持大范围的图像格式.从硬盘中读取图像,使用Image模块中的open函数.你不需要在打开文件的时候给出文件类型.图像库自动根据文件内容来决定格式.
    保存一枚图像,使用Image模块中的save函数.在保存图像的时候,文件名就像得很重要了.除非你指定格式,否则图像库使用文件扩展名来确定文件所用的存储格式.
    Example: 将图像转化为JPEG
import os, sys
import Image
for infile in sys.argv[1:]:
outfile = os.path.splitext(infile)[0] + &#8220;.jpg&#8221;
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
&#160;
print &#8220;cannot convert&#8221;, infile
    可以稍微花时间讨论一下显示指定文件格式时的save方法.如果你使用一个非标准的扩展名,就必须始终以这种方式指定文件格式:
    Example: 创建JPEG图像的缩略图
import os, sys
import Image
for infile in [...]]]></description>
			<content:encoded><![CDATA[<p><strong><font size="5"><span style="color: #0b5394">使用Image类</span></font></strong></p>
<p><span>    </span>在PIL中最重要的类就是Image类，它在模块中以相同的名称定义。你可以用多种方式创建该类的实例：包括从文件中载放图像，处理其它图像所得，及从草稿中创建图像。<br />
<span>    </span>从文件中裁入图像，使用Imag模块中的open函数。</p>
<p style="margin-left: 40px">&gt;&gt;&gt; import Image<br />
&gt;&gt;&gt; im = Image.open(&#8221;lena.ppm&#8221;)</p>
<p><span>    </span>如果成功，函数返回一个Image对象。现在，你可以使用实例属性来检视文件内容了。</p>
<p style="margin-left: 40px">&gt;&gt;&gt; print im.format, im.size, im.mode<br />
PPM (512, 512) RGB</p>
<p><span>    </span>format 属性标识出图像的类别,如果图像并不是从文件中读取,它的值会被设为None.size属性是一个二元组,内容包括图像的高和宽(以像素为单 位).mode属性定了的图像颜色通道数量及名字,同时也包括像素类型和深度.常见的模式比如&#8221;L&#8221;(luminance)代表灰度图,&#8221;RGB&#8221;是真彩色图像, 而&#8221;CMYK&#8221;则是打印图像.</p>
<p><span>    </span>如果打开失败,则抛出IOError异常.</p>
<p><span>    </span>一旦创建了一枚Image类的实例,你就可以使用这个类所定义的方法来处理和操作图像.举列来说,显示这一图像:</p>
<p style="margin-left: 40px">&gt;&gt;&gt; im.show()</p>
<p><span>    </span>(标准版本的show并不是非常有效率,因为先将图像保存为临时文件,然后调用xv来显示它.如果你没有安装xv,它甚至可能无法使用.不过当它可用的时候,还是能够非常方便地调试与测试.)<br />
<span>    </span>&#8211;译注,xv是Unix下的一个看图工具,在windows是,应该是调用系统默认的工具打开图像.<br />
<span>    </span>接下来的部分,我们给出这个库中的一些不同函数的总览.</p>
<p><strong style="color: #0b5394"><font size="5">读写图像</font></strong><br />
<span>    </span>P<span></span>IL支持大范围的图像格式.从硬盘中读取图像,使用Image模块中的open函数.你不需要在打开文件的时候给出文件类型.图像库自动根据文件内容来决定格式.<br />
<span>    </span>保存一枚图像,使用Image模块中的save函数.在保存图像的时候,文件名就像得很重要了.除非你指定格式,否则图像库使用文件扩展名来确定文件所用的存储格式.<br />
<span>    </span>Example: 将图像转化为JPEG</p>
<p style="margin-left: 40px">import os, sys<br />
import Image<br />
for infile in sys.argv[1:]:</p>
<p style="margin-left: 40px">outfile = os.path.splitext(infile)[0] + &#8220;.jpg&#8221;</p>
<p>if infile != outfile:<br />
try:</p>
<p style="margin-left: 40px">Image.open(infile).save(outfile)</p>
<p>except IOError:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">print &#8220;cannot convert&#8221;, infile</p>
<p><span>    </span>可以稍微花时间讨论一下显示指定文件格式时的save方法.如果你使用一个非标准的扩展名,就必须始终以这种方式指定文件格式:<br />
<span>    </span>Example: 创建JPEG图像的缩略图</p>
<p style="margin-left: 40px">import os, sys<br />
import Image<br />
for infile in sys.argv[1:]:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">outfile = os.path.splitext(infile)[0] + &#8220;.thumbnail&#8221;</p>
<p style="margin-left: 40px">if infile != outfile:<br />
try:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">im = Image.open(infile)<br />
im.thumbnail((128, 128))<br />
im.save(outfile, &#8220;JPEG&#8221;)</p>
<p>except IOError:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">print &#8220;cannot create thumbnail for&#8221;, infile</p>
<p><span>    </span>若非真有必要,图像库并不会去解码或载入栅格数据,注意这一点很重要.当你打开一个图像文件,读取文件头就得了文件的格式,压缩模式,大小和其它解码该文件所需要的属性.但文件的其它部分则要稍后处理.<br />
<span>    </span>这意味着打开一枚图像是一个非常快速的操作,它与图像的大小及压缩方式都没有关系.这里是快速查看一堆图像属性的简单脚本:<br />
Example:打印图像属性</p>
<p style="margin-left: 40px">import sys<br />
import Image<br />
for infile in sys.argv[1:]:</p>
<p style="margin-left: 40px">&nbsp;</p>
<p style="margin-left: 40px">try:</p>
<p style="margin-left: 40px">im = Image.open(infile)<br />
print infile, im.format, &#8220;%dx%d&#8221; % im.size, im.mode</p>
<p>except IOError:</p>
<p>pass</p>
<p align="center"><a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91python-imaging-library-%E6%A6%82%E8%A7%88.html">上一页</a>  <a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a>  <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-2.html">下一页 </a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[pil-handbook翻译]Python Imaging Library 概览</title>
		<link>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/</link>
		<comments>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 08:07:13 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[pil-handbook]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88.html</guid>
		<description><![CDATA[简介
    Python Imaging Library为您的python程序添加有图像处理能力的接口。
    这个库提供扩展文件格式支持——一种高效的扩展方式——和相当强大的图像处理能力。
    核心图像库是为快速访问一些基本像素格式图像设计的。它能为普通图像处理工具提供一个可靠的基础。
    让我们来看一个这个库的可能应用：
图像归档
    针对于图像归档和批处理，Python Imaging Library是理想的程序。你可以用这个库来创建缩略呼，转化图像格工，打印图片等等。
    
    Python Imaging Library的最新版本可以识别并读取多数图像格式。保存时则有意地限制为最常用的交流和发布格式。
图像显示
    最新发布版本包含Tk PhotoImage and BitmapImage 接口，Windows DIB 接口也可以随着PythonWin一起使用。而对了X 和Mac系统的显示，您可以使用Jack Jansen的图像库。
    调试版本（可能指非release版本）中，于Unix版本也提供show方法调用xv来显示图像。

图像处理
    图像库包含一些基本的图像处理函数，包括像素操作，一系列内置convolution kernel的滤镜和颜色空间变换。
    同时也提供图像缩放，旋转和任意几何变换的支持。
    提供histogram方法使您可以输出对某个图像的一些统计信息。这可以用于自动对比增强和全局统计分析。
PIL目录  下一页
Related Posts[pil-handbook翻译]使用指南-5(1)
[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]使用指南-1(2)
用Dropbox搭配MoinMoin建立个人的Wiki(1)
[Founders At Work]Firefox创始人Blake Ross -2(0)
[PY]玩pythonchallenge要复盘(0)
[PY]python中的OO(0)
[PY]module的问题(0)
Recent Comments]]></description>
			<content:encoded><![CDATA[<p><strong><font size="5"><span style="color: #0b5394">简介</span></font></strong><br />
<span>    </span>Python Imaging Library为您的python程序添加有图像处理能力的接口。</p>
<p><span>    </span>这个库提供扩展文件格式支持——一种高效的扩展方式——和相当强大的图像处理能力。</p>
<p><span>    </span>核心图像库是为快速访问一些基本像素格式图像设计的。它能为普通图像处理工具提供一个可靠的基础。</p>
<p><span>    </span>让我们来看一个这个库的可能应用：</p>
<p><strong><font style="color: #0b5394" size="5">图像归档</font></strong><br />
<span>    </span>针对于图像归档和批处理，Python Imaging Library是理想的程序。你可以用这个库来创建缩略呼，转化图像格工，打印图片等等。<br />
<span>    </span><br />
<span>    </span>Python Imaging Library的最新版本可以识别并读取多数图像格式。保存时则有意地限制为最常用的交流和发布格式。</p>
<p><strong style="color: #0b5394"><font size="5">图像显示</font></strong></p>
<p><span>    </span>最新发布版本包含Tk PhotoImage and BitmapImage 接口，Windows DIB 接口也可以随着PythonWin一起使用。而对了X 和Mac系统的显示，您可以使用Jack Jansen的图像库。</p>
<p><span>    </span>调试版本（可能指非release版本）中，于Unix版本也提供show方法调用xv来显示图像。<br />
<strong style="color: #0b5394"><font size="5"><br />
图像处理</font></strong></p>
<p><span>    </span>图像库包含一些基本的图像处理函数，包括像素操作，一系列内置convolution kernel的滤镜和颜色空间变换。</p>
<p><span>    </span>同时也提供图像缩放，旋转和任意几何变换的支持。</p>
<p><span>    </span>提供histogram方法使您可以输出对某个图像的一些统计信息。这可以用于自动对比增强和全局统计分析。</p>
<p><a href="http://www.laihj.net/pil%E7%BF%BB%E8%AF%91">PIL目录</a>  <a href="http://www.laihj.net/articles/pil-handbook%E7%BF%BB%E8%AF%91%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97-1.html">下一页</a></p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/" title="[Founders At Work]Firefox创始人Blake Ross -2 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -2</a>(0)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[PY]玩pythonchallenge要复盘</title>
		<link>http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/</link>
		<comments>http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 01:21:11 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pythonchallenge]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98.html</guid>
		<description><![CDATA[忘了谁人在什么地方说的了，他们组里的人进来，先潜下心来做两周的pythonchallenge,然后写出来的python代码就非常漂亮。
我不相信，直到我前两天刚好有空做了第n关（很慢，我还真就当一个游戏来玩，只是有空才做一下），来到 第n+1关时，在页面最下面看到一句话：
To see the solutions to the previous level, replace pc with pcc, i.e. go  to: http://www.pythonchallenge.com/pcc/def/ocr.html
接提示可以找到前一段的解法，多种解法，用不同思路的解法。可以用来跟自己的想法印证对比，并学习更多的写python方式。非常好玩。
Related Posts用Dropbox搭配MoinMoin建立个人的Wiki(1)
[pil-handbook翻译]使用指南-5(1)
[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]使用指南-1(2)
[pil-handbook翻译]Python Imaging Library 概览(1)
[PY]python中的OO(0)
[PY]module的问题(0)
Recent Comments]]></description>
			<content:encoded><![CDATA[<p>忘了谁人在什么地方说的了，他们组里的人进来，先潜下心来做两周的pythonchallenge,然后写出来的python代码就非常漂亮。</p>
<p>我不相信，直到我前两天刚好有空做了第n关（很慢，我还真就当一个游戏来玩，只是有空才做一下），来到 第n+1关时，在页面最下面看到一句话：</p>
<blockquote><p><font color="#000000"><font size="-1">To see the solutions to the previous level, replace pc with pcc, i.e. go  to: http://www.pythonchallenge.com/pcc/def/ocr.html</font></font></p></blockquote>
<p>接提示可以找到前一段的解法，多种解法，用不同思路的解法。可以用来跟自己的想法印证对比，并学习更多的写python方式。非常好玩。</p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PY]python中的OO</title>
		<link>http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/</link>
		<comments>http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 12:01:19 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.laihj.net/articles/pypython%e4%b8%ad%e7%9a%84oo.html</guid>
		<description><![CDATA[写给自己的备忘，很浅显，可能只是句法方面的事，不涉及OO思想之类的，因为OO思想是共通的，并没有python的OO思想一说
PS 示例代码来自《python简明教程》
继承
python中的继承语法跟java/c++系不同，却不是：也不是extends,是这样的
 class child(parent):
pass             #py中，pass是空语句块
self,init，和del
python中的self有点类似于c++/java中的this是指针，代表本实例，不同的地方在于self要写在类函数的参数列表中,传递了self才能在函数中使用类实例的数据，但在调用时不需要写这个参数
init类似于构造函数，用法也差不多，而del，不像c++中的析构，比较像java中的finalize，在实例被回收时调用，同java中一样，这个函数被调用的时间是不一样的
 class SchoolMember:
def __init__(self, name, age):
self.name = name
self.age = age
print &#8216;(Initialized SchoolMember: %s)&#8217; % self.name
def __del__(self, name, age)：pass
def tell(self):
print &#8216;Name:&#8221;%s&#8221; Age:&#8221;%s&#8221;&#8216; % (self.name, self.age)
SchoolMember().tell()  &#60;&#8211;这里不需要写self的引用
类数据与实例数据
 class child():
bi=2    &#60;&#8211;在java中这个是要加staitc滴，也就是说这个实际上相当于静态
def __init__(self):
self.bb=3 &#60;&#8211;实例数据
重载
基本一样，不同的是python中的构造函数并不自动调用基类的构造函数，需要显式调用。
多继承
python支持多继承，不过不晓得有没有用，反正在我看来，多继承就是记载于葵花宝典的屠龙之技，自宫去学它了吧，也不一定用得上
让C/C++/Java人员不爽的地方：

 * 类数据居然不用声明直接用的
 * 数据居然不用指定类型的
 * 函数居然没有返回值类型的
 * 居然没有访问权限修饰符的（我是指public,private,protected，忘了术语怎么说了）


Related Posts用Dropbox搭配MoinMoin建立个人的Wiki(1)
[pil-handbook翻译]使用指南-5(1)
[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]使用指南-1(2)
[pil-handbook翻译]Python Imaging Library 概览(1)
[PY]玩pythonchallenge要复盘(0)
[PY]module的问题(0)
Recent Comments]]></description>
			<content:encoded><![CDATA[<p>写给自己的备忘，很浅显，可能只是句法方面的事，不涉及OO思想之类的，因为OO思想是共通的，并没有python的OO思想一说<br />
PS 示例代码来自《python简明教程》</p>
<p><font color="#0000ff"><strong>继承</strong></font><br />
python中的继承语法跟java/c++系不同，却不是：也不是extends,是这样的</p>
<blockquote><p> class child(parent):<br />
pass             #py中，pass是空语句块</p></blockquote>
<p><font color="#0000ff"><strong>self,init，和del</strong></font><br />
python中的self有点类似于c++/java中的this是指针，代表本实例，不同的地方在于self要写在类函数的参数列表中,传递了self才能在函数中使用类实例的数据，但在调用时不需要写这个参数<br />
init类似于构造函数，用法也差不多，而del，不像c++中的析构，比较像java中的finalize，在实例被回收时调用，同java中一样，这个函数被调用的时间是不一样的</p>
<blockquote><p> class SchoolMember:<br />
def __init__(self, name, age):<br />
self.name = name<br />
self.age = age<br />
print &#8216;(Initialized SchoolMember: %s)&#8217; % self.name<br />
def __del__(self, name, age)：pass</p>
<p>def tell(self):<br />
print &#8216;Name:&#8221;%s&#8221; Age:&#8221;%s&#8221;&#8216; % (self.name, self.age)</p>
<p>SchoolMember().tell()  &lt;&#8211;这里不需要写self的引用</p></blockquote>
<p><strong><font color="#0000ff">类数据与实例数据</font></strong></p>
<blockquote><p> class child():<br />
bi=2    &lt;&#8211;在java中这个是要加staitc滴，也就是说这个实际上相当于静态<br />
def __init__(self):<br />
self.bb=3 &lt;&#8211;实例数据</p></blockquote>
<p><strong><font color="#0000ff">重载</font></strong><br />
基本一样，不同的是python中的构造函数并不自动调用基类的构造函数，需要显式调用。</p>
<p><font color="#0000ff"><strong>多继承</strong></font><br />
python支持多继承，不过不晓得有没有用，反正在我看来，多继承就是记载于葵花宝典的屠龙之技，自宫去学它了吧，也不一定用得上</p>
<p>让C/C++/Java人员不爽的地方：</p>
<ul>
<li> * 类数据居然不用声明直接用的</li>
<li> * 数据居然不用指定类型的</li>
<li> * 函数居然没有返回值类型的</li>
<li> * 居然没有访问权限修饰符的（我是指public,private,protected，忘了术语怎么说了）</li>
</ul>
<blockquote><p><code class="key"></code><code></code></p></blockquote>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/" title="[PY]module的问题 2008.11.5">[PY]module的问题</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[PY]module的问题</title>
		<link>http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 06:33:51 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[pydev]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://laihj.yo2.cn/articles/pymodule%e7%9a%84%e9%97%ae%e9%a2%98.html</guid>
		<description><![CDATA[前两天配好了pydev+eclipse的环境，然后在玩The Python Challenge.
The Python Challenge是一个很好玩的游戏，其实就是一系列的网页，你必须解开A页面的迷，然得到B页面的地址，这样一关一关走下去，有些解迷的乐趣，同时也能用来熟悉Python的模块函数，相关不错。
问题是我玩的那一关需要用到string模块的translate和maketrans函数，这本身难度不高，几行代码也就解决了，可奇怪的是，编译出错（也许python是解释出错？），在eclipse的输出框里面总是提示string模块并没有translate的方法，可不管看文档还是GOOGLE的结果，这模块都是应该包含这两个接口的。
这问题卡了一个多小时，直到我发现eclipse的输出窗口出现了一些本不该出现的输出字串，才想起来，原来我在这个py源文件的同一目录建了一个名叫string.py的文件，也就是说，当我在源文件里面输入import string的时候，它导入的并不是python库文件string.pyc，而是我自己建的这个string.pyc.
这样看起来，python引入库的时候，应该是跟c或者c++一样，先是寻找自己所在的目录有没有这一模块，如果没有，才会到系统指定的模版文件夹中寻找。
 ps:关于python，推荐一个沈洁元先生的python简明教程，在线版和下载版到处都是，GOOGLE一下即可。
Related Posts用Dropbox搭配MoinMoin建立个人的Wiki(1)
[pil-handbook翻译]使用指南-5(1)
[pil-handbook翻译]使用指南-4(2)
[pil-handbook翻译]指用指南-3(2)
[pil-handbook翻译]使用指南-2(1)
[pil-handbook翻译]使用指南-1(2)
[pil-handbook翻译]Python Imaging Library 概览(1)
[PY]玩pythonchallenge要复盘(0)
[PY]python中的OO(0)
Recent Comments]]></description>
			<content:encoded><![CDATA[<p>前两天配好了pydev+eclipse的环境，然后在玩<a href="http://www.pythonchallenge.com/">The Python Challenge</a>.</p>
<p>The Python Challenge是一个很好玩的游戏，其实就是一系列的网页，你必须解开A页面的迷，然得到B页面的地址，这样一关一关走下去，有些解迷的乐趣，同时也能用来熟悉Python的模块函数，相关不错。</p>
<p>问题是我玩的那一关需要用到string模块的translate和maketrans函数，这本身难度不高，几行代码也就解决了，可奇怪的是，编译出错（也许python是解释出错？），在eclipse的输出框里面总是提示string模块并没有translate的方法，可不管看文档还是GOOGLE的结果，这模块都是应该包含这两个接口的。</p>
<p>这问题卡了一个多小时，直到我发现eclipse的输出窗口出现了一些本不该出现的输出字串，才想起来，原来我在这个py源文件的同一目录建了一个名叫string.py的文件，也就是说，当我在源文件里面输入import string的时候，它导入的并不是python库文件string.pyc，而是我自己建的这个string.pyc.</p>
<p>这样看起来，python引入库的时候，应该是跟c或者c++一样，先是寻找自己所在的目录有没有这一模块，如果没有，才会到系统指定的模版文件夹中寻找。</p>
<p> ps:关于python，推荐一个沈洁元先生的python简明教程，在线版和下载版到处都是，GOOGLE一下即可。</p>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2009/11/%e7%94%a8dropbox%e6%90%ad%e9%85%8dmoinmoin%e5%bb%ba%e7%ab%8b%e4%b8%aa%e4%ba%ba%e7%9a%84wiki/" title="用Dropbox搭配MoinMoin建立个人的Wiki 2009.11.25">用Dropbox搭配MoinMoin建立个人的Wiki</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-5/" title="[pil-handbook翻译]使用指南-5 2008.12.30">[pil-handbook翻译]使用指南-5</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-4/" title="[pil-handbook翻译]使用指南-4 2008.12.29">[pil-handbook翻译]使用指南-4</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e6%8c%87%e7%94%a8%e6%8c%87%e5%8d%97-3/" title="[pil-handbook翻译]指用指南-3 2008.12.27">[pil-handbook翻译]指用指南-3</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-2/" title="[pil-handbook翻译]使用指南-2 2008.12.26">[pil-handbook翻译]使用指南-2</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-1/" title="[pil-handbook翻译]使用指南-1 2008.12.25">[pil-handbook翻译]使用指南-1</a>(2)</li>
<li><a href="http://www.laihj.net/2008/12/pil-handbook%e7%bf%bb%e8%af%91python-imaging-library-%e6%a6%82%e8%a7%88/" title="[pil-handbook翻译]Python Imaging Library 概览 2008.12.24">[pil-handbook翻译]Python Imaging Library 概览</a>(1)</li>
<li><a href="http://www.laihj.net/2008/12/py%e7%8e%a9pythonchallenge%e8%a6%81%e5%a4%8d%e7%9b%98/" title="[PY]玩pythonchallenge要复盘 2008.12.9">[PY]玩pythonchallenge要复盘</a>(0)</li>
<li><a href="http://www.laihj.net/2008/11/pypython%e4%b8%ad%e7%9a%84oo/" title="[PY]python中的OO 2008.11.12">[PY]python中的OO</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2008/11/pymodule%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
