图片缩略图
<?php
/*
* 图片缩略图
* $srcfile 源图片,$rate 缩放比,默认为缩小一半
* 例如: resizeimage("zt32.gif",".1");
*/function resizeimage($srcfile,$rate=.5){
$size=getimagesize($srcfile);
switch($size[2]){
case 1:
$img=imagecreatefromgif($srcfile);
break;
case 2:
$img=imagecreatefromjpeg($srcfile);
break;
case 3:
$img=imagecreatefrompng($srcfile);
break;
}
//源图片的宽度和高度
$srcw=imagesx($img);
$srch=imagesy($img);
//目的图片的宽度和高度
$dstw=floor($srcw*$rate);
$dsth=floor($srch*$rate);
//新建一个真彩色图像
$im=imagecreatetruecolor($dstw,$dsth);
$black=imagecolorallocate($im,255,255,255);
imagefilledrectangle($im,0,0,$dstw,$dsth,$black);
imagecopyresized($im,$img,0,0,0,0,$dstw,$dsth,$srcw,$srch);
// 以 JPEG 格式将图像输出到浏览器或文件
header("Content-type: image/jpeg");
imagejpeg($im);
//释放图片
imagedestroy($im);
imagedestroy($img);}
?>
<?php
/*
* 图片缩略图
* $srcfile 源图片,$rate 缩放比,默认为缩小一半
* 例如: resizeimage("zt32.gif",".1");
*/function resizeimage($srcfile,$rate=.5){
$size=getimagesize($srcfile);
switch($size[2]){
case 1:
$img=imagecreatefromgif($srcfile);
break;
case 2:
$img=imagecreatefromjpeg($srcfile);
break;
case 3:
$img=imagecreatefrompng($srcfile);
break;
}
//源图片的宽度和高度
$srcw=imagesx($img);
$srch=imagesy($img);
//目的图片的宽度和高度
$dstw=floor($srcw*$rate);
$dsth=floor($srch*$rate);
//新建一个真彩色图像
$im=imagecreatetruecolor($dstw,$dsth);
$black=imagecolorallocate($im,255,255,255);
imagefilledrectangle($im,0,0,$dstw,$dsth,$black);
imagecopyresized($im,$img,0,0,0,0,$dstw,$dsth,$srcw,$srch);
// 以 JPEG 格式将图像输出到浏览器或文件
header("Content-type: image/jpeg");
imagejpeg($im);
//释放图片
imagedestroy($im);
imagedestroy($img);}
?>
<?
/*
* 把图片存入mysql数据库
*
#
# 数据表的结构 `images`
#CREATE TABLE images (
picid int(3) NOT NULL auto_increment,
picdata longblob NOT NULL,
pictext varchar(100) NOT NULL default '',
PRIMARY KEY (picid)
) TYPE=MyISAM; */
if(trim($picfile[0])!=""){
$link=@mysql_connect("localhost","root","root");
//连接,用你的具体连接名替换root,具体连接密码替换root
if($link==false)
{
echo "<script>alert('连接数据库时发生错误,请稍后再试!')</script>";
}
$res=mysql_select_db("kkk");
if($res==false)
{
echo "<script>alert('打开数据库时发生错误,请稍后再试!')</script>";
}
$tmpset=0;
// 存放成功加入的图片数目
for($i=0;$i<=3;$i++)
{
// picfile[i]存放所提交的图片信息(文件路径)
if(trim($picfile[$i])!="")
{
//读取数据
$fp=fopen($picfile[$i],"r");
$picdata=fread($fp,filesize($picfile[$i]));
fclose($fp);
//加上必要的标志符号
$picdata=addslashes($picdata);
//用具体的数据表名代替images
//pictext[i]存放所提交的图片的文字说明
$qu="insert into images(picdata,pictext) values('$picdata','$pictext[$i]')";
$res=@mysql_query($qu,$link);
if($res==false)
{
echo "<script>alert('图片 ".$i." 提交失败!')</script>";
continue;
}
$tmpset=$tmpset+1;
}
}
echo "<script>alert('操作成功!实际入库图片数 ".$tmpset." 张')</script>";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<form action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="picfile[]">
文件说明
<input type="text" name="pictext[]">
<br>
<input type="file" name="picfile[]">
文件说明
<input type="text" name="pictext[]">
<br>
<input type="file" name="picfile[]">
文件说明
<input type="text" name="pictext[]">
<br>
<input type="file" name="picfile[]">
文件说明
<input type="text" name="pictext[]">
<br>
<input type="submit" name="Submit" value="提交">
</form>
</body>
</html>显示存在mysql中的图片
<?
/*
* 显示存在mysql中的图片
* 在外部用<img src="displayimg.php?picid=1">来调用数据库中的第一张图片
#
# 数据表的结构 `images`
#CREATE TABLE images (
picid int(3) NOT NULL auto_increment,
picdata longblob NOT NULL,
pictext varchar(100) NOT NULL default '',
PRIMARY KEY (picid)
) TYPE=MyISAM; */$link=@mysql_connect("localhost","root","root");
mysql_select_db("kkk");
$qu="select picid,picdata from images where picid=$picid";
$res=@mysql_query($qu,$link);
$num=mysql_num_rows($res);
if($num==0)
{
print "<br><br><br>";
print "<p><b>没有这张图片!</b></p>";
exit();
}
$row=@mysql_fetch_row($res);
header("Content-type:image/");
echo $row[1];
?>
1、
请输入右边的验证码:
<input name="auth_number" type="text" size="4" maxlength="4" class="input1">
<img src="auth_img.php" width="80" height="20" border=0 alt="">2、auth_img.php
<?
session_start();$img_width=80;
$img_height=20;srand(microtime() * 100000);
for($ti=0;$ti<4;$ti++)
{
$new_number.=dechex(rand(0,15));
}$_SESSION[check_auth_number]=$new_number;
$number_img=imageCreate($img_width,$img_height);
ImageColorAllocate($number_img,255,255,255);
for($i=1;$i<=128;$i++)
{
imageString($number_img,1,mt_rand(1,$img_width),mt_rand(1,$img_height),"*",imageColorAllocate($number_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
for($i=0;$i<strlen($HTTP_SESSION_VARS[check_auth_number]);$i++)
{
imageString($number_img,mt_rand(3,5),$i*$img_width/4+mt_rand(1,8),mt_rand(1,$img_height/4), $HTTP_SESSION_VARS[check_auth_number][$i],imageColorAllocate($number_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
header("Content-type: image/png");
ImagePng($number_img);
ImageDestroy($number_img);
?>3、验证部份
function check_auth_number($auth_number)
{
if($auth_number!=$_SESSION[check_auth_number] || empty($_SESSION[check_auth_number]))
{
echo "<Script Language =\"JavaScript\">\n history.back();\n alert(\" 图片验证码错误 \");\n </Script> \n";
exit();
}
}
PHP手册是个好东西,但是相比起来实作的经验和相互的交流更重要,上CSDN的朋友未必水平都一样,熟悉和精通的方向也不一样,开一系列集思广益的帖子,高手们多上一些实作的程序和个人的心得、体会、技巧,我认为这对大家都是有帮助的。
个人觉得图象处理这种第三方API的东西,没必要多研究它,实际上它也超出PHP要讨论的范围了,当需要的时候查查手册基本也能搞定
建议楼主开个PHP XML讨论区,因为XML也后可能是没个涉及PHP的人必须要懂得的东西