<?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>AgilePHP &#187; Image_lib</title>
	<atom:link href="http://www.agilephp.net/tag/image_lib/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilephp.net</link>
	<description>开发可以敏捷，人生需要慢慢体味</description>
	<lastBuildDate>Thu, 03 Nov 2011 11:53:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>使用CI进行开发时遇到的一个诡异问题：无法找到文件404</title>
		<link>http://www.agilephp.net/2009/11/%e4%bd%bf%e7%94%a8ci%e8%bf%9b%e8%a1%8c%e5%bc%80%e5%8f%91%e6%97%b6%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aa%e8%af%a1%e5%bc%82%e9%97%ae%e9%a2%98%ef%bc%9a%e6%97%a0%e6%b3%95%e6%89%be%e5%88%b0%e6%96%87/</link>
		<comments>http://www.agilephp.net/2009/11/%e4%bd%bf%e7%94%a8ci%e8%bf%9b%e8%a1%8c%e5%bc%80%e5%8f%91%e6%97%b6%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aa%e8%af%a1%e5%bc%82%e9%97%ae%e9%a2%98%ef%bc%9a%e6%97%a0%e6%b3%95%e6%89%be%e5%88%b0%e6%96%87/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 01:50:49 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[file not found]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[gd2]]></category>
		<category><![CDATA[Image_lib]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[swfupload]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2009/11/%e4%bd%bf%e7%94%a8ci%e8%bf%9b%e8%a1%8c%e5%bc%80%e5%8f%91%e6%97%b6%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aa%e8%af%a1%e5%bc%82%e9%97%ae%e9%a2%98%ef%bc%9a%e6%97%a0%e6%b3%95%e6%89%be%e5%88%b0%e6%96%87/</guid>
		<description><![CDATA[问题描述：我写了两个方法，add_product，save_product，add_product方法将会展现一个form给用户，用户可以在这里填写产品的基本信息，还可以上传产品的一张图片，save_product用来处理上一个方法POST过来的数据。逻辑很简单，用到了CodeIgniter里的Upload和Image_lib两个Library，在机器上测试也是十分的顺利，传到服务器上我甚至都没有想到会出问题，但是却出了一个让我摸不着头脑的问题，在保存文件时，服务器返回了404，也就是文件没有找到。在确认了配置信息都正确的情况下，我有点摸不着头脑了，于是GET了一下save_product方法，发现可以GET到，POST数据过去的时候，却返回404，奇怪奇怪！ 由于被这奇怪的错误信息所迷惑，所以到周一的早日才想到祭出我的法定，分解测试，把代码隔成段，我先把save_product里的代码全部注释掉，服务器返回500，正常；再把处理上传的代码解注释，服务器返回正常；再把进行图片缩放的代码解注释掉，服务器返回404，无法找到文件。基本上确定是在图像处理的环节出了问题，于是把&#8217;image_library&#8217; =&#62; &#8216;GD2&#8242;换成&#8217;image_library&#8217; =&#62; &#8216;GD&#8217;，问题解决。 可是到现在也没有想通即使服务器上没有gd2模块，我调用了相应的函数，为什么页面返回404。同时鄙视一下某个服务器提供商，PHP的许多常用的模块都没有加载，JSON解析都么有，怎么做应用呢？？ 更新：问题解决了，出问题的函数是imagefill，某个服务器提供商的虚拟主机里提供了GD2，不过是一个相当老的版本。我替换了解决PNG图片缩放透明的算法，就OK了，但是一旦调用imagefill，就会返回一个404错误，还是费解。 相关文章 CodeIgniter中PNG图片处理背景不透明问题的解决办法 在Godaddy的主机上配置CodeIgniter<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/09/png-background-trasparent-in-codeigniter/" rel="bookmark">CodeIgniter中PNG图片处理背景不透明问题的解决办法</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/06/godaddy-and-codeigniter/" rel="bookmark">在Godaddy的主机上配置CodeIgniter</a><!-- (2)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>问题描述：我写了两个方法，add_product，save_product，add_product方法将会展现一个form给用户，用户可以在这里填写产品的基本信息，还可以上传产品的一张图片，save_product用来处理上一个方法POST过来的数据。逻辑很简单，用到了CodeIgniter里的Upload和Image_lib两个Library，在机器上测试也是十分的顺利，传到服务器上我甚至都没有想到会出问题，但是却出了一个让我摸不着头脑的问题，在保存文件时，服务器返回了404，也就是文件没有找到。在确认了配置信息都正确的情况下，我有点摸不着头脑了，于是GET了一下save_product方法，发现可以GET到，POST数据过去的时候，却返回404，奇怪奇怪！</p>
<p>由于被这奇怪的错误信息所迷惑，所以到周一的早日才想到祭出我的法定，分解测试，把代码隔成段，我先把save_product里的代码全部注释掉，服务器返回500，正常；再把处理上传的代码解注释，服务器返回正常；再把进行图片缩放的代码解注释掉，服务器返回404，无法找到文件。基本上确定是在图像处理的环节出了问题，于是把&#8217;image_library&#8217; =&gt; &#8216;GD2&#8242;换成&#8217;image_library&#8217; =&gt; &#8216;GD&#8217;，问题解决。</p>
<p>可是到现在也没有想通即使服务器上没有gd2模块，我调用了相应的函数，为什么页面返回404。同时鄙视一下<a href="http://www.35.net" target="_blank">某个服务器提供商</a>，PHP的许多常用的模块都没有加载，JSON解析都么有，怎么做应用呢？？</p>
<p>更新：问题解决了，出问题的函数是imagefill，<a href="http://www.35.net" target="_blank">某个服务器提供商</a>的虚拟主机里提供了GD2，不过是一个相当老的版本。我替换了解决PNG图片缩放透明的算法，就OK了，但是一旦调用imagefill，就会返回一个404错误，还是费解。</p>
<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2009/09/png-background-trasparent-in-codeigniter/" rel="bookmark">CodeIgniter中PNG图片处理背景不透明问题的解决办法</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/06/godaddy-and-codeigniter/" rel="bookmark">在Godaddy的主机上配置CodeIgniter</a><!-- (2)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/11/%e4%bd%bf%e7%94%a8ci%e8%bf%9b%e8%a1%8c%e5%bc%80%e5%8f%91%e6%97%b6%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aa%e8%af%a1%e5%bc%82%e9%97%ae%e9%a2%98%ef%bc%9a%e6%97%a0%e6%b3%95%e6%89%be%e5%88%b0%e6%96%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter中PNG图片处理背景不透明问题的解决办法</title>
		<link>http://www.agilephp.net/2009/09/png-background-trasparent-in-codeigniter/</link>
		<comments>http://www.agilephp.net/2009/09/png-background-trasparent-in-codeigniter/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 02:38:53 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Image_lib]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/?p=167</guid>
		<description><![CDATA[BS一下自己起的这个标题。 本文仅限于解决使用GD2来处理图片的情况。 我想很多用CodeIgniter的人都会有这样的需求，用户上传了一张照片，需要对照片进行一定的修改以后（缩放，调整大小）再存储下来，但是如果用户上传了一张背景透明的PNG图片，那么我们使用CodeIgniter中的Image_lib进行裁剪以后，将会得到一张背景是黑色的图片，为什么会产生这个错误呢，我们来看一下CI的处理逻辑。 新建一张图片，该图片默认是黑色不透明背景 把源图片相应区域中的内容复制到新图片上 处理完毕 毫无疑问，你将获得一张黑色背景的图片，其最根本原因还是在于使用GD2来处理图片时，imagecreatetruecolor函数本身生成的就是一张黑色不透明的图片，你把一个透明的图片拷贝到它上面，当然背景就变黑了，所以我们只要在以上步骤里的1与2之间添加处理，将新图片的背景设置成100%透明即可以解决这个问题。 在Image_lib.php(CodeIgniter 1.71版本)的515行 即$dst_img = $create($this-&#62;width, $this-&#62;height);之后添加 // Transparent the background!!! if ($create == &#8216;imagecreatetruecolor&#8217;) { imagesavealpha($dst_img, true); $color = imagecolorallocatealpha($dst_img, 0, 0, 0, 127); imagefill($dst_img, 0, 0, $color); } 便可以解决问题了。 更新，提供另一种办法： // Transparent the background!!! if ($create == &#8216;imagecreatetruecolor&#8217;) { imagealphablending($dst_img, false); imagesavealpha($dst_img, true); } &#60;!&#8211; end &#8211;&#62; [...]<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/fix-chrome-to-add-extensions-in-a-junction-folder/" rel="bookmark">使用mklink或junction后Chrome无法安装扩展的解决办法</a><!-- (7.8)--></li>
		<li><a href="http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/" rel="bookmark">在CentOS 5.4上安装CouchDB</a><!-- (7.5)--></li>
		<li><a href="http://www.agilephp.net/2009/12/linux-unix-benchmark/" rel="bookmark">Linux\Unix性能测试</a><!-- (6.9)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<p>BS一下自己起的这个标题。</p>
<p><span style="color: #0000ff">本文仅限于解决使用GD2来处理图片的情况。</span></p>
<p>我想很多用CodeIgniter的人都会有这样的需求，用户上传了一张照片，需要对照片进行一定的修改以后（缩放，调整大小）再存储下来，但是如果用户上传了一张背景透明的PNG图片，那么我们使用CodeIgniter中的Image_lib进行裁剪以后，将会得到一张背景是黑色的图片，为什么会产生这个错误呢，我们来看一下CI的处理逻辑。</p>
<ol>
<li>新建一张图片，该图片默认是黑色不透明背景 </li>
<li>把源图片相应区域中的内容复制到新图片上 </li>
<li>处理完毕 </li>
</ol>
<p>毫无疑问，你将获得一张黑色背景的图片，其最根本原因还是在于使用GD2来处理图片时，imagecreatetruecolor函数本身生成的就是一张黑色不透明的图片，你把一个透明的图片拷贝到它上面，当然背景就变黑了，所以我们只要在以上步骤里的1与2之间添加处理，将新图片的背景设置成100%透明即可以解决这个问题。</p>
<p>在Image_lib.php(CodeIgniter 1.71版本)的515行</p>
<p>即$dst_img = $create($this-&gt;width, $this-&gt;height);之后添加</p>
<p>// Transparent the background!!!   <br />if ($create == &#8216;imagecreatetruecolor&#8217;)    <br />{    <br />imagesavealpha($dst_img, true);</p>
<p>$color = imagecolorallocatealpha($dst_img, 0, 0, 0, 127);   <br />imagefill($dst_img, 0, 0, $color);    <br />}</p>
<p>便可以解决问题了。</p>
<p>更新，提供另一种办法：</p>
<p>// Transparent the background!!!   <br />if ($create == &#8216;imagecreatetruecolor&#8217;)    <br />{    <br />imagealphablending($dst_img, false);    <br />imagesavealpha($dst_img, true);    <br />}</p>
<p>&lt;!&#8211; end &#8211;&gt;</p>
<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/fix-chrome-to-add-extensions-in-a-junction-folder/" rel="bookmark">使用mklink或junction后Chrome无法安装扩展的解决办法</a><!-- (7.8)--></li>
		<li><a href="http://www.agilephp.net/2009/11/couchdb-on-centos-5-4/" rel="bookmark">在CentOS 5.4上安装CouchDB</a><!-- (7.5)--></li>
		<li><a href="http://www.agilephp.net/2009/12/linux-unix-benchmark/" rel="bookmark">Linux\Unix性能测试</a><!-- (6.9)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2009/09/png-background-trasparent-in-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

