<?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; 翻译</title>
	<atom:link href="http://www.laihj.net/tag/%e7%bf%bb%e8%af%91/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>[Founders At Work]Firefox创始人Blake Ross -2</title>
		<link>http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/</link>
		<comments>http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 03:00:54 +0000</pubDate>
		<dc:creator>laihj</dc:creator>
				<category><![CDATA[善其事]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Founders At Work]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://www.laihj.net/?p=647738</guid>
		<description><![CDATA[
Livingston：跟我说说Firefox是怎么开始的？
Ross：Firefox脱胎于Mozilla，Mozilla本身有非常漫长的历史现在我并不打算谈论。我个人是在2000年开始参与Mozilla项目的。它是开源的，任何人都可以参与。最初我是跟Netscape团队紧密合作，因为他们在Mozilla为他们的产品奠基。我则帮他们修改BUG，然后他们就邀请我在一个夏天去做个兼职。我曾对发布Netscpe有所帮助，这真是一个很酷的头份工作。


Livingston：你当时只有14岁，对吗？
Ross：是的，我在加利福尼亚工作，那真是一个美妙的夏天。然后我就开始在家工作一段时间，当第二年夏天再次回去的时候，事情已经变得很糟糕。Netscape在市场上的份额变得越来越小。当时，他们大约还有5%的市场份额。 那是后AOL时代，也是后浏览器大战时代.AOL开始注资并向浏览器要求更多盈利时，事情就得更令人失望了。他们收购Netscape花了大约四千万美元，现在要求投资回报了。
 于是，浏览器开始变成一个仅仅是把用户带到Netscape.com的工具。在那里放满了搜索按钮，又贴遍广告。一团糟。那种文化并不是着眼用户的。在那里工作充满了痛苦。
 Firefox更多的是对我们在Netcape经历的回应，而不是针对浏览器的老大——IE。IE在当时几乎被抛弃了，2001年，微软解释了IE团队。所以我们开始Firefox，以一种我们所知的可行的方式来做浏览器——如果我们不被市场，销售和其它在Netscape时所受的影响。它开始于我们——在Netscape里打着为用户作正确决定的斗争的人——之中的三四个人。
 举个便子，在Nescape 7中我们想加入“弹出广告停止”的功能。它将成为第一个包含“弹出阻止”的主流浏览器。Mozilla分支上的代码都已经编好了，但是最终并没有包含进去，因为Netscape.com含有弹出式广告。这种决定总是痛苦的，而挂上我们的名字释出这种产品则令人沮丧。所以我们开始了一个叫作Phoenix的项目，名字取材于神话中一种在自己的骨灰中重生的鸟。这就像这个项目是在Netscape的骨灰中重生的。


Livingston：都有哪些人？
Ross： David Hyatt, Joe Hewitt——他们也是我现在新公司的合伙人，Parakey—我负责开发, Brian Ryner和Asa Dotzler提供构建和QA支持。那年的前六个月，项目非常随性，下班后我们在Denny&#8217;s餐厅做一些东西。后来我回到迈阿密，在线工作了一段时间。Phoenix基本上是我们控制的Mozilla源码库的一个分支。我们关闭了代码，因为觉得当你面对无数追寻利润的Netscape人和无数避开主题又想达到一致的开源Geek时，完全面向用户开发是不可能的。我们只是想要关起门来做一些我们认为对的事情。我们经历了很多名字变更，Mozilla给矛了很多支持。这差不多就是它怎么开始的。

Livingston：还有些什么名字：
Ross：创建的时候它叫Phoenix，很快我们就遇到了商标问题。那时只有三个人，同时我们都不是律师，所以只能做一些某些人要求我们做的事情。在这件事情上，Phoenix技术公司起诉我们因为他们也有同名的浏览器产品。我们就把它更名为Firebird，因为看起来它们是一样的，可是有一个开源数据库已经叫了这个名字。所以我们只好再次重命名。那时它已经开始流行——虽然没像现在这么流行——所以我们要保持名字中“Fire”的部分。仅仅是找一个叫Fire-任何东西的名字几个月，有人想到了Firefox，它实际上是一种红色熊猫的中国名字。

Livingston：Firefox的开发者都在不同的地方吗？
Ross：刚开始的时候我们都在Netscape。然后Dave去Apple开发Safari，我们也得到了一些新的海外伙伴，比如新西兰的Ben Goodger，法国的Pierre Chanial，还有斯洛伐克的Jan Varga.我回到了迈阿密，继续在网上与他们合作。
 在Parakey，我和Joe依然通过IM来协作，虽然我们只相隔20分钟路程，因为从Firefox开始就习惯了这种方式。相比与我开车去找他或他开车来找我，这种方式快太多了。



Livingston:Dave在Apple工作会造成困扰吗？
Ross：是的。他们也在开发面向初级用户的浏览器，他也无法在一个竞争对手那里开发同样的东西。那并不是终局，只是一个问题。


Livingston:他离开Apple了？
Ross：没有。他现在还在开发Safari。他开发了Firefox，然后离开，去了Apple。


Livingston：所以你们人数很少。
Ross：Firefox的团队一直在变化。说我们人数很少实际上是不公平的，因为我们的工作基于Mozilla，很明显的，Mozilla拥有大量开发者，同时还有很多开发者在做核心布局引擎。Firefox团队自身——就是关心核心引擘的方方面面以及工作在代码库分支的那些人——头年总是保持在四五人的规模。现在更多些，显而易见，因为这是主代码树。所有的这些人曾从事Mozilla，现在开发Firefox。


Related Posts[Founders At Work]Firefox创始人Blake Ross -6(0)
[Founders At Work]Firefox创始人Blake Ross -5(0)
[Founders At Work]Firefox创始人Blake Ross -4(0)
[Founders At Work]Firefox创始人Blake Ross -3(1)
[Founders At Work]Firefox创始人Blake Ross -1(0)
[Founders At Work] Yahoo -5(1)
[Founders At Work] Yahoo -4(0)
[Founders At Work] Yahoo -3(0)
[Founders At Work] Yahoo -2(0)
[Founders At Work] Yahoo -1(0)
Recent Comments]]></description>
			<content:encoded><![CDATA[<div class="Section0">
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：跟我说说Firefox是怎么开始的？</strong></span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: '宋体';">Ross</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">：Firefox脱胎于Mozilla，Mozilla本身有非常漫长的历史现在我并不打算谈论。我个人是在2000年开始参与Mozilla项目的。它是开源的，任何人都可以参与。最初我是跟Netscape团队紧密合作，因为他们在Mozilla为他们的产品奠基。我则帮他们修改BUG，然后他们就邀请我在一个夏天去做个兼职。我曾对发布Netscpe有所帮助，这真是一个很酷的头份工作。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：你当时只有14岁，对吗？</strong></span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross：是的，我在加利福尼亚工作，那真是一个美妙的夏天。然后我就开始在家工作一段时间，当第二年夏天再次回去的时候，事情已经变得很糟糕。Netscape在市场上的份额变得越来越小。当时，他们大约还有5%的市场份额。 那是后AOL时代，也是后浏览器大战时代.AOL开始注资并向浏览器要求更多盈利时，事情就得更令人失望了。他们收购Netscape花了大约四千万美元，现在要求投资回报了。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"> <span style="font-family: 宋体;">于是，浏览器开始变成一个仅仅是把用户带到Netscape.com的工具。在那里放满了搜索按钮，又贴遍广告。一团糟。那种文化并不是着眼用户的。在那里工作充满了痛苦。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"> Firefox<span style="font-family: 宋体;">更多的是对我们在Netcape经历的回应，而不是针对浏览器的老大——IE。IE在当时几乎被抛弃了，2001年，微软解释了IE团队。所以我们开始Firefox，以一种我们所知的可行的方式来做浏览器——如果我们不被市场，销售和其它在Netscape时所受的影响。它开始于我们——在Netscape里打着为用户作正确决定的斗争的人——之中的三四个人。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"> <span style="font-family: 宋体;">举个便子，在Nescape 7中我们想加入“弹出广告停止”的功能。它将成为第一个包含“弹出阻止”的主流浏览器。Mozilla分支上的代码都已经编好了，但是最终并没有包含进去，因为Netscape.com含有弹出式广告。这种决定总是痛苦的，而挂上我们的名字释出这种产品则令人沮丧。所以我们开始了一个叫作Phoenix的项目，名字取材于神话中一种在自己的骨灰中重生的鸟。这就像这个项目是在Netscape的骨灰中重生的。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：都有哪些人？</strong></span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross： David Hyatt, Joe Hewitt——他们也是我现在新公司的合伙人，Parakey—我负责开发, Brian Ryner和Asa Dotzler提供构建和QA支持。那年的前六个月，项目非常随性，下班后我们在Denny&#8217;s餐厅做一些东西。后来我回到迈阿密，在线工作了一段时间。Phoenix基本上是我们控制的Mozilla源码库的一个分支。我们关闭了代码，因为觉得当你面对无数追寻利润的Netscape人和无数避开主题又想达到一致的开源Geek时，完全面向用户开发是不可能的。我们只是想要关起门来做一些我们认为对的事情。我们经历了很多名字变更，Mozilla给矛了很多支持。这差不多就是它怎么开始的。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：还有些什么名字：</strong></span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross：创建的时候它叫Phoenix，很快我们就遇到了商标问题。那时只有三个人，同时我们都不是律师，所以只能做一些某些人要求我们做的事情。在这件事情上，Phoenix技术公司起诉我们因为他们也有同名的浏览器产品。我们就把它更名为Firebird，因为看起来它们是一样的，可是有一个开源数据库已经叫了这个名字。所以我们只好再次重命名。那时它已经开始流行——虽然没像现在这么流行——所以我们要保持名字中“Fire”的部分。仅仅是找一个叫Fire-任何东西的名字几个月，有人想到了Firefox，它实际上是一种红色熊猫的中国名字。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：Firefox的开发者都在不同的地方吗？</strong></span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross：刚开始的时候我们都在Netscape。然后Dave去Apple开发Safari，我们也得到了一些新的海外伙伴，比如新西兰的Ben Goodger，法国的Pierre Chanial，还有斯洛伐克的Jan Varga.我回到了迈阿密，继续在网上与他们合作。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"> <span style="font-family: 宋体;">在Parakey，我和Joe依然通过IM来协作，虽然我们只相隔20分钟路程，因为从Firefox开始就习惯了这种方式。相比与我开车去找他或他开车来找我，这种方式快太多了。</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><strong>Livingston:Dave</strong><span style="font-family: 宋体;"><strong>在Apple工作会造成困扰吗？</strong></span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross：是的。他们也在开发面向初级用户的浏览器，他也无法在一个竞争对手那里开发同样的东西。那并不是终局，只是一个问题。</span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><strong>Livingston:</strong><span style="font-family: 宋体;"><strong>他离开Apple了？</strong></span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">Ross：没有。他现在还在开发Safari。他开发了Firefox，然后离开，去了Apple。</span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><br />
</span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;"><strong>Livingston：所以你们人数很少。</strong></span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 10.5pt; font-family: '宋体';">Ross</span><span style="font-size: 10.5pt; font-family: 'Times New Roman';"><span style="font-family: 宋体;">：Firefox的团队一直在变化。说我们人数很少实际上是不公平的，因为我们的工作基于Mozilla，很明显的，Mozilla拥有大量开发者，同时还有很多开发者在做核心布局引擎。Firefox团队自身——就是关心核心引擘的方方面面以及工作在代码库分支的那些人——头年总是保持在四五人的规模。现在更多些，显而易见，因为这是主代码树。所有的这些人曾从事Mozilla，现在开发Firefox。</span></span></p>
<p class="p0" style="margin-bottom: 0pt; margin-top: 0pt;">
</div>
<h3>Related Posts</h3><ul><li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-6/" title="[Founders At Work]Firefox创始人Blake Ross -6 2009.06.24">[Founders At Work]Firefox创始人Blake Ross -6</a>(0)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-5/" title="[Founders At Work]Firefox创始人Blake Ross -5 2009.06.23">[Founders At Work]Firefox创始人Blake Ross -5</a>(0)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-4/" title="[Founders At Work]Firefox创始人Blake Ross -4 2009.06.22">[Founders At Work]Firefox创始人Blake Ross -4</a>(0)</li>
<li><a href="http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-3/" title="[Founders At Work]Firefox创始人Blake Ross -3 2009.06.8">[Founders At Work]Firefox创始人Blake Ross -3</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-1/" title="[Founders At Work]Firefox创始人Blake Ross -1 2009.06.6">[Founders At Work]Firefox创始人Blake Ross -1</a>(0)</li>
<li><a href="http://www.laihj.net/2009/11/founders-at-work-yahoo-5/" title="[Founders At Work] Yahoo -5 2009.11.13">[Founders At Work] Yahoo -5</a>(1)</li>
<li><a href="http://www.laihj.net/2009/11/founders-at-work-yahoo-4/" title="[Founders At Work] Yahoo -4 2009.11.12">[Founders At Work] Yahoo -4</a>(0)</li>
<li><a href="http://www.laihj.net/2009/11/founders-at-work-yahoo-3/" title="[Founders At Work] Yahoo -3 2009.11.10">[Founders At Work] Yahoo -3</a>(0)</li>
<li><a href="http://www.laihj.net/2009/11/founders-at-work-yahoo-2/" title="[Founders At Work] Yahoo -2 2009.11.5">[Founders At Work] Yahoo -2</a>(0)</li>
<li><a href="http://www.laihj.net/2009/11/founders-at-work-yahoo-1/" title="[Founders At Work] Yahoo -1 2009.11.4">[Founders At Work] Yahoo -1</a>(0)</li>
</ul><h3>Recent Comments</h3><ul></ul>]]></content:encoded>
			<wfw:commentRss>http://www.laihj.net/2009/06/founders-at-workfirefox%e5%88%9b%e5%a7%8b%e4%ba%bablake-ross-2/feed/</wfw:commentRss>
		<slash:comments>0</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翻译]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>
	</channel>
</rss>
