<?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>FDS's Blog &#187; 图片</title>
	<atom:link href="http://blog.1xi.net/tag/tupian/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.1xi.net</link>
	<description>收藏和分享</description>
	<lastBuildDate>Thu, 12 May 2011 06:33:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>ASP实现图片上传</title>
		<link>http://blog.1xi.net/asp/asp-tupian-shangchuan</link>
		<comments>http://blog.1xi.net/asp/asp-tupian-shangchuan#comments</comments>
		<pubDate>Thu, 30 Jul 2009 03:22:52 +0000</pubDate>
		<dc:creator>FDS</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[上传]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://blog.1xi.net/asp/asp-tupian-shangchuan</guid>
		<description><![CDATA[用纯ＡＳＰ代码来实现图片的上传以及保存到数据库的功能（顺便也实现显示数据库中的图片到网页上的功能）。首先我们先来熟悉一下将要使用的对象方法。我们用来获取上一个页面传递过来的数据一般是使用Request对象]]></description>
			<content:encoded><![CDATA[<p><span id="ArticleContent1_ArticleContent1_lblContent">用纯ＡＳＰ代码来实现图片的上传以及保存到数据库的功能（顺便也实现显示数据库中的图片到网页上的功能）。<br />
　　首先我们先来熟悉一下将要使用的对象方法。我们用来获取上一个页面传递过来的数据一般是使用Request对象。同样的，我们也可以使用Request对象来获取上传上来的文件数据，使用的方法是Request.BinaryRead()。而我们要从数据库中读出来图片的数据显示到网页上面要用到的方法是：<br />
Request.BinaryWrite()。在我们得到了图片的数据，要保存到数据库中的时候，不可以直接<br />
使用Insert语句对数据库进行操作，而是要使用ADO的AppendChunk方法，同样的，读出数据库<br />
中的图片数据，要使用GetChunk方法。各个方法的具体语法如下：<br />
*Request.BinaryRead语法：<br />
variant=Request.BinaryRead(count)<br />
参数<br />
variant<br />
返回值保存着从客户端读取到数据。<br />
count<br />
指明要从客户端读取的数据量大小，这个值小于或者等于使用方法Request.TotalBytes得到的<br />
数据量。<br />
*Request.BinaryWrite语法：<br />
Request.BinaryWritedata<br />
参数<br />
data<br />
要写入到客户端浏览器中的数据包。<br />
*Request.TotalBytes语法：<br />
variant=Request.TotalBytes<br />
参数<br />
variant<br />
返回从客户端读取到数据量的字节数。<br />
*AppendChunk语法<br />
将数据追加到大型文本、二进制数据Field或Parameter对象。<br />
object.AppendChunkData<br />
参数<br />
objectField或Parameter对象<br />
Data变体型，包含追加到对象中的数据。<br />
说明<br />
使用Field或Parameter对象的AppendChunk方法可将长二进制或字符数<br />
　　据填写到对象中。在系统内存有限的情况下，可以使用AppendChunk方法对长整型值进行<br />
部分而非全部的操作。<br />
*GetChunk语法<br />
返回大型文本或二进制数据Field对象的全部或部分内容。<br />
variable=field.GetChunk(Size)<br />
返回值<br />
返回变体型。<br />
参数<br />
Size长整型表达式，等于所要检索的字节或字符数。<br />
说明<br />
　　使用Field对象的GetChunk方法检索其部分或全部长二进制或字符数据。在系统内存有限<br />
的情况下，可使用GetChunk方法处理部分而非全部的长整型值。<br />
GetChunk调用返回的数据将赋给“变量”。如果Size大于剩余的数据，则<br />
GetChunk仅返回剩余的数据而无需用空白填充“变量”。如果字段为空，则<br />
GetChunk方法返回Null。<br />
　　每个后续的GetChunk调用将检索从前一次GetChunk调用停止处开始的数据。但是，如果从<br />
一个字段检索数据然后在当前记录中设置或读取另一个字段的值，ADO将认为已从第一个字段<br />
中检索出数据。如果在第一个字段上再次调用GetChunk方法，ADO将把调用解释为新的GetChu<br />
nk操作并从记录的起始处开始读取。如果其他Recordset对象不是首个Recordset对象的副本，<br />
则访问其中的字段不会破坏GetChunk操作。<br />
如果Field对象的Attributes属性中的adFldLong位设置为True，则可以对该字段使用GetChun<br />
k方法。<br />
如果在Field对象上使用Getchunk方法时没有当前记录，将产生错误3021（无当前记录）。<br />
　　接下来，我们就要来设计我们的数据库了，作为测试我们的数据库结构如下（access200<br />
0）：</p>
<p>字段名称　　　　类型　　　　描述<br />
　　id　　　自动编号　　　主键值<br />
    img          OLE对象　　　用来保存图片数据　</p>
<p>对于在MSSQLServer7中，对应的结构如下：<br />
字段名称　　　　类型　　　　描述<br />
　　id　　　　int(Identity)　       主键值<br />
     img　　    image　　　          用来保存图片数据　</p>
<p>现在开始正式编写我们的纯ＡＳＰ代码上传部分了，首先，我们有一个提供给用户的上传界面<br />
，可以让用户选择要上传的图片。代码如下<br />
（upload.htm）：<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;center&gt;<br />
&lt;form name=&#8221;mainForm&#8221; enctype=&#8221;multipart/form-data&#8221; action=&#8221;process.asp&#8221; method=p<br />
ost&gt;<br />
　　&lt;inputtype=filename=mefile&gt;&lt;br&gt;<br />
　　&lt;inputtype=submitname=okvalue=&#8221;OK&#8221;&gt;<br />
&lt;/form&gt;<br />
&lt;/center&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
注意enctype=&#8221;multipart/form-data&#8221;，一定要在Form中有这个属性，否则，将无法得到上传<br />
上来的数据。接下来，我们要在process.asp中对从浏览器中获取的数据进行必要的处理，因<br />
为我们在process.asp中获取到的数据不仅仅包含了我们想要的上传上来的图片的数据，也包<br />
含了其他的无用的信息，我们需要剔除冗余数据，并将处理过的图片数据保存到数据库中，这<br />
里我们以access2000为例。具体代码如下（process.asp）：<br />
&lt;%<br />
response.buffer=true<br />
formsize=request.totalbytes<br />
formdata=request.binaryread(formsize)<br />
bncrlf=chrB(13)&amp;chrB(10)<br />
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)<br />
datastart=instrb(formdata,bncrlf&amp;bncrlf)+4<br />
dataend=instrb(datastart+1,formdata,divider)-datastart<br />
mydata=midb(formdata,datastart,dataend)<br />
setconnGraph=server.CreateObject(&#8220;ADODB.connection&#8221;)<br />
connGraph.ConnectionString=&#8221;driver={MicrosoftAccessDriver(*.mdb)};DBQ=&#8221;&amp;server.Ma<br />
pPath(&#8220;images.mdb&#8221;)&amp;&#8221;;uid=;PWD=;&#8221;<br />
connGraph.Open<br />
setrec=server.createobject(&#8220;ADODB.recordset&#8221;)<br />
rec.Open&#8221;SELECT*FROM[images]whereidisnull&#8221;,connGraph,1,3<br />
rec.addnew<br />
rec(&#8220;img&#8221;).appendchunkmydata<br />
rec.update<br />
rec.close<br />
setrec=nothing<br />
setconnGraph=nothing<br />
%&gt;<br />
好了，这下我们就把上传来的图片保存到了名为images.mdb的数据库中了，剩下的工作就是要<br />
将数据库中的图片数据显示到网页上面了。一般在ＨＴＭＬ中，显示图片都是使用&lt;IMG&gt;标签<br />
，也就是&lt;IMGSRC=&#8221;图片路径&#8221;&gt;，但是我们的图片是保存到了数据库中，“图片路径”是什么<br />
呢？呵呵，其实这个SRC属性除了指定路径外，也可以这样使用哦：<br />
&lt;IMGSRC=&#8221;showimg.asp?id=xxx&#8221;&gt;<br />
所以，我们所要做的就是在showimg.asp中从数据库中读出来符合条件的<br />
数据，并返回到SRC属性中就可以了，具体代码如下（showimg.asp）：<br />
&lt;%<br />
setconnGraph=server.CreateObject(&#8220;ADODB.connection&#8221;)<br />
connGraph.ConnectionString=&#8221;driver={MicrosoftAccessDriver(*.mdb)};DBQ=&#8221;&amp;<br />
server.MapPath(&#8220;images.mdb&#8221;)&amp;&#8221;;uid=;PWD=;&#8221;<br />
connGraph.Open<br />
setrec=server.createobject(&#8220;ADODB.recordset&#8221;)<br />
strsql=&#8221;selectimgfromimageswhereid=&#8221;&amp;trim(request(&#8220;id&#8221;))<br />
rec.openstrsql,connGraph,1,1<br />
Response.ContentType=&#8221;image/*&#8221;<br />
Response.BinaryWriterec(&#8220;img&#8221;).getChunk(7500000)<br />
rec.close<br />
setrec=nothing<br />
setconnGraph=nothing<br />
%&gt;<br />
注意在输出到浏览器之前一定要指定Response.ContentType=&#8221;image/*&#8221;，<br />
以便正常显示图片。<br />
最后要注意的地方是，我的process.asp中作的处理没有考虑到第一页(upload.htm)中还有其<br />
他数据，比如&lt;INPUT type=tesxt name=userid&gt;等等，如果有这些项目，你的process.asp就<br />
要注意处理掉不必要的数据。<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.1xi.net/asp/asp-tupian-shangchuan/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP实现回帖或者刷新后图片变换</title>
		<link>http://blog.1xi.net/php/php-tupian-bianhuan</link>
		<comments>http://blog.1xi.net/php/php-tupian-bianhuan#comments</comments>
		<pubDate>Wed, 03 Dec 2008 01:37:15 +0000</pubDate>
		<dc:creator>FDS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://blog.1xi.net/php/php-tupian-bianhuan</guid>
		<description><![CDATA[是不是常在论坛或者贴吧里面看见，让你回复后，就会出现美女脱衣服或者图片变换的神奇帖子，今天就介绍一个用PHP实现方法。 randimage.php &#60;?php $dir = &#8220;images/&#8221;;//图片目录,注意是按照名字排序显示的&#8230; $imgwidth = 0;//图片宽度,为0则为原始大小 $iforder = 1;//顺序显示还是随机显示,1为顺序显示,0为随机显示 $ifcircle = 0;//顺序显示的时候是否循环播放,1为循环播放,0为不循环 session_start(); if($imgwidth==0){$imgwidth==&#8221;";}else{$imgwidth==&#8221;width=&#8217;&#8221;.$imgwidth.&#8221;&#8216;&#8221;;} $handle=opendir($dir); while ($file_name=readdir($handle)){ if(($file_name!==&#8221;.&#8221;)&#38;&#38;($file_name!==&#8221;..&#8221;)){$file_list[]=$file_name; } } closedir($handle); if($iforder==1){ if(isset($_SESSION['sess_order'])){ if($_SESSION['sess_order']&#60;count($file_list)-1){ $_SESSION['sess_order']++; }else{ if($ifcircle == 1){ $_SESSION['sess_order']=0; } } }else{ $_SESSION['sess_order']=0; } $i=$_SESSION['sess_order']; }else{ $num=count($file_list)-1; $i=rand(0,$num); } readfile($dir.$file_list[$i]); ?&#62; 调用 &#60;img src=&#8221;randimage.php&#8221; border=&#8221;0&#8243;&#62;]]></description>
			<content:encoded><![CDATA[<p>是不是常在论坛或者贴吧里面看见，让你回复后，就会出现美女脱衣服或者图片变换的神奇帖子，今天就介绍一个用PHP实现方法。</p>
<blockquote><p>randimage.php</p>
<p>&lt;?php<br />
$dir = &#8220;images/&#8221;;//图片目录,注意是按照名字排序显示的&#8230;<br />
$imgwidth = 0;//图片宽度,为0则为原始大小<br />
$iforder = 1;//顺序显示还是随机显示,1为顺序显示,0为随机显示<br />
$ifcircle = 0;//顺序显示的时候是否循环播放,1为循环播放,0为不循环</p>
<p>session_start();<br />
if($imgwidth==0){$imgwidth==&#8221;";}else{$imgwidth==&#8221;width=&#8217;&#8221;.$imgwidth.&#8221;&#8216;&#8221;;}<br />
$handle=opendir($dir);<br />
while ($file_name=readdir($handle)){<br />
if(($file_name!==&#8221;.&#8221;)&amp;&amp;($file_name!==&#8221;..&#8221;)){$file_list[]=$file_name; }<br />
}<br />
closedir($handle);</p>
<p>if($iforder==1){<br />
if(isset($_SESSION['sess_order'])){<br />
if($_SESSION['sess_order']&lt;count($file_list)-1){<br />
$_SESSION['sess_order']++;<br />
}else{<br />
if($ifcircle == 1){<br />
$_SESSION['sess_order']=0;<br />
}<br />
}<br />
}else{<br />
$_SESSION['sess_order']=0;<br />
}<br />
$i=$_SESSION['sess_order'];<br />
}else{<br />
$num=count($file_list)-1;<br />
$i=rand(0,$num);<br />
}</p>
<p>readfile($dir.$file_list[$i]);<br />
?&gt;</p></blockquote>
<p>调用<br />
&lt;img src=&#8221;randimage.php&#8221; border=&#8221;0&#8243;&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.1xi.net/php/php-tupian-bianhuan/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>根据鼠标的事件，来控制图片大小的效果</title>
		<link>http://blog.1xi.net/javascript/shubiaoshijian-he-tupiandaxiao</link>
		<comments>http://blog.1xi.net/javascript/shubiaoshijian-he-tupiandaxiao#comments</comments>
		<pubDate>Mon, 24 Nov 2008 09:41:28 +0000</pubDate>
		<dc:creator>fangds</dc:creator>
				<category><![CDATA[JAVASCRIPT]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://blog.1xi.net/?p=7311</guid>
		<description><![CDATA[发现了一个通过根据鼠标的事件，来控制图片大小的效果，觉得挺有意思，分享一下。 关于透明效果，注意一下： 火狐：this.style.MozOpacity=1; IE：this.filters.alpha.opacity=100; 以下是实现代码，可以直接运行试试看。 &#60;p style=&#34;margin:5px 0 10px 0&#34;&#62;&#60;a style=&#34;&#34; href=&#34;http://www.1xi.net/&#34; target=&#34;_blank&#34;&#62;&#60;img onmouseover=&#34;try{this.style.height='100px';this.style.MozOpacity=1;this.filters.alpha.opacity=100;}catch(e){};&#34; onmouseout=&#34;try{this.style.height='40px';this.style.MozOpacity=0.8;this.filters.alpha.opacity=80;}catch(e){};&#34; style=&#34;-moz-opacity:0.8; filter:alpha(opacity=80);background:url('http://blog.1xi.net/wp-content/themes/church_10/images/logo.png') 0 bottom;height:40px;&#34; src=&#34;http://blog.1xi.net/images/tm.png&#34; alt=&#34;Fds's blog&#34; title=&#34;Fds's blog&#34;/ width=&#34;350&#34;&#62;&#60;/a&#62;&#60;br/&#62;&#60;/p&#62; 提示：你可以先修改部分代码再运行。]]></description>
			<content:encoded><![CDATA[<p>发现了一个通过根据鼠标的事件，来控制图片大小的效果，觉得挺有意思，分享一下。<br />
关于透明效果，注意一下：<br />
火狐：this.style.MozOpacity=1;<br />
IE：this.filters.alpha.opacity=100;<br />
以下是实现代码，可以直接运行试试看。</p>
<div class="runcode">
<p><textarea name="runcode" class="runcode_text" id="runcode_yhUeB6">
&lt;p style=&quot;margin:5px 0 10px 0&quot;&gt;&lt;a style=&quot;&quot; href=&quot;http://www.1xi.net/&quot; target=&quot;_blank&quot;&gt;&lt;img onmouseover=&quot;try{this.style.height='100px';this.style.MozOpacity=1;this.filters.alpha.opacity=100;}catch(e){};&quot; onmouseout=&quot;try{this.style.height='40px';this.style.MozOpacity=0.8;this.filters.alpha.opacity=80;}catch(e){};&quot; style=&quot;-moz-opacity:0.8; filter:alpha(opacity=80);background:url('http://blog.1xi.net/wp-content/themes/church_10/images/logo.png') 0 bottom;height:40px;&quot; src=&quot;http://blog.1xi.net/images/tm.png&quot; alt=&quot;Fds's blog&quot; title=&quot;Fds's blog&quot;/ width=&quot;350&quot;&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;
</textarea></p>
<p><input type="button" value="运行" class="runcode_button" onclick="runcode_open_new('runcode_yhUeB6');"/> <input type="button" value="复制" class="runcode_button" onclick="runcode_copy('runcode_yhUeB6');"/> 提示：你可以先修改部分代码再运行。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.1xi.net/javascript/shubiaoshijian-he-tupiandaxiao/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP生成gif图片，当图片没有的色素的的解决方法</title>
		<link>http://blog.1xi.net/php/php-to-gif</link>
		<comments>http://blog.1xi.net/php/php-to-gif#comments</comments>
		<pubDate>Tue, 18 Nov 2008 12:27:37 +0000</pubDate>
		<dc:creator>FDS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[图片]]></category>

		<guid isPermaLink="false">http://blog.1xi.net/php/php-togif</guid>
		<description><![CDATA[PHP动态生成gif格式的图片时，如果你使用 int imagecreatefromgif(string filename);   来取出一张GIF格式图形，通当取出当背景或者基本的画布样本使用，在其上绘制图形，要注意：如果这个文件中没有的色素，你将不能使用。 这里介绍一个解决的方法： 你可以用 int imagecreate(int x_size, int y_size); 建立一张全空的图形。在其上绘制图形。将黑色作为透明色。 这个新建的图形要和原图形大小相同，绝对位置相同，将其放在原图形上方，就可以了。 &#60;img border=&#8221;0&#8243; src=&#8221;http://blog.1xi.net/php.gif&#8221; style=&#8221;position: absolute; left: 1; top: 1; z-index: 0&#8243; width=&#8221;200&#8243; height=&#8221;300&#8243;&#62; 原图形文件 &#60;img border=&#8221;0&#8243; src=&#8221;photo.php&#8221; style=&#8221;position: absolute; left: 1; top: 1; z-index: 1&#8243; width=&#8221;200&#8243; height=&#8221;300&#8243;&#62; 全空文件 photo.php photo.php 的代码： &#60;?php Header(&#8220;Content-type: image/gif&#8221;); $im = imagecreate(200,300); $black = ImageColorAllocate($im, 0,0,0); [...]]]></description>
			<content:encoded><![CDATA[<p>PHP动态生成gif格式的图片时，如果你使用 <strong>int imagecreatefromgif(string filename);</strong>  <br />
来取出一张GIF格式图形，通当取出当背景或者基本的画布样本使用，在其上绘制图形，要注意：<strong>如果这个文件中没有的色素，你将不能使用。</strong></p>
<p>这里介绍一个解决的方法：<br />
你可以用 <strong>int imagecreate(int x_size, int y_size);</strong><br />
建立一张全空的图形。在其上绘制图形。将黑色作为透明色。<br />
这个新建的图形要和原图形大小相同，绝对位置相同，将其放在原图形上方，就可以了。</p>
<p>&lt;img border=&#8221;0&#8243; src=&#8221;http://blog.1xi.net/php.gif&#8221; style=&#8221;position: absolute; left: 1; top: 1; z-index: 0&#8243; width=&#8221;200&#8243; height=&#8221;300&#8243;&gt;<br />
原图形文件</p>
<p>&lt;img border=&#8221;0&#8243; src=&#8221;photo.php&#8221; style=&#8221;position: absolute; left: 1; top: 1; z-index: 1&#8243; width=&#8221;200&#8243; height=&#8221;300&#8243;&gt;<br />
全空文件 photo.php</p>
<blockquote><p>photo.php 的代码：<br />
&lt;?php<br />
Header(&#8220;Content-type: image/gif&#8221;);<br />
$im = imagecreate(200,300);<br />
$black = ImageColorAllocate($im, 0,0,0);<br />
$red = ImageColorAllocate($im, 255,0,0);<br />
$blue = ImageColorAllocate($im, 0,0,255);</p>
<p>imagerectangle($im,100,200,150,200,$red) ;<br />
imagestring($im,2,120,150,&#8221;aaaaaaaa&#8221;,$blue);</p>
<p>imagecolortransparent($im,$black);<br />
//将黑色作为透明色</p>
<p>ImageGif($im);<br />
ImageDestroy($im);<br />
?&gt;  </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.1xi.net/php/php-to-gif/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

