PHP上传、生成缩略图、生成文字水印和图片水印

 更新时间:2016年11月25日 16:59  点击:1421


<?php
/*
'-##########################################-|
'|     程序设计:(绿竹居)                |
'|     MSN:[email]lzj_zhangjun@hotmail.com[/email]         |
'|     Email:cszjun@gmail.com              |
'|     结合自己以前做的上传和生成缩略和改编一个
'|     老前辈的生成图片水印做成这个                 |
'|     上传+生成缩略图+生成文字水印和图片水印      |
'|     可以直接引用                             |
'-##########################################-|
*/
//审明图片文件夹
$bigfolder="img"
;
$smallfolder="smallimg"
;
//审明文件夹名称 以年月日来建议文件夹
$fdate=date("Ymd"
);
//echo $fdate;
//审明文件名称。以年月日时分秒命名
$fname=date("YmdHis"
);
$bigname="0724e_com_".$fname
;
$smallname="0724e_com_".$fname."_s"
;
//echo $fname."<br/>".$bigname."<br/>".$smallname;
//确定大小文件夹的名称和路经
$bigaddrname=$bigfolder."/".$fdate."/".$bigname
;
$smalladdrname=$smallfolder."/".$fdate."/".$smallname
;
//审明小图片的高度和宽度
$RESIZEWIDTH=180

$RESIZEHEIGHT=150
;
//审明水印的文字或图片的地址及字体的地址
$imgaddr="img.jpg";    
//图片水印
$fontname="www.0724e.com";  
//文字水印
//充许上传的文件扩展名
$exit_name=array(".jpg",".gif",".png"
);
if (isset(
$_POST['Submit'
])){
//上传部分----------------------------
//定议上传名称和上传错误
$upfile=$_FILES['image']['name'
];
$uperror=$_FILES['image']['error'
];
//最简表单验证

switch ($uperror
) {
  case 
1
:
      die(
"<div align="center">上传真过PHP设置充许的最大值<a href="javascript:history.back();">点击返回</a></div>"
);
  break;
  case 
2
:
   die(
"<div align="center">上传超过了表单充许的最大值<a href="javascript:history.back();">点击返回</a></div>"
);
  break; 
  case 
3
:
   die(
"<div align="center">文件只有部分被上传了<a href="javascript:history.back();">点击返回</a></div>"
);
     break;
  case 
4
:
   die(
"<div align="center">文件不有被上传<a href="javascript:history.back();">点击返回</a></div>"
);
     break;
}

//检测扩展是否是充许上传的文件类型
//取得文件扩展名
$exname=strrchr($upfile,"."
);
//判断取得扩展名是否在要求的扩展名内
if(!in_array($exname,$exit_name
))
die(
"<div align="center">文件扩展名不对。只允许上传jpg gif png的图片<a href="javascript:history.back();">点击返回</a></div>"
);

//检测存放图片的目录和子目录是否存在,如果不存在则建目录和子目录,并给目录最大权限777 对LINUX或unix对WINDOWS没必要
//大图
if (!file_exists($bigfolder
)){
  
mkdir($bigfolder,0777
);
  
mkdir($bigfolder."/".$fdate,0777
);
}else{
  if (!
file_exists($bigfolder."/".$fdate
)){
   
mkdir($bigfolder."/".$fdate,0777
);
  }
}
//缩略图
if (!file_exists($smallfolder
)){
  
mkdir($smallfolder,0777
);
  
mkdir($smallfolder."/".$fdate,0777
); 
}else{
  if (!
file_exists($smallfolder."/".$fdate
)){
  
mkdir($smallfolder."/".$fdate,0777
); 
  }
}
//创建目录结束

//得到临时上传的文件
$upfiletmp=$_FILES['image']['tmp_name'
];
//判断临时文件是否存在
if ($uperror==6
)
die(
"<div align="center">找不到临时上传文件,上传失败<a href="javascript:history.back();">点击返回</a></div>"
);

//水印部分==========================================
//水印函数开始============
/**      $groundImage    背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式; 
*      $waterPos       水印位置,有10种状态,0为随机位置; 
*                      1为顶端居左,2为顶端居中,3为顶端居右; 
*                      4为中部居左,5为中部居中,6为中部居右; 
*                      7为底端居左,8为底端居中,9为底端居右; 
*      $waterImage     图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式; 
*      $waterText      文字水印,即把文字作为为水印,支持ASCII码,不支持中文; 
*      $textFont       文字大小,值为1、2、3、4或5,默认为5; 
*      $textColor      文字颜色,值为十六进制颜色值,默认为#FF0000(红色); 
* */

function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText=""$textFont=5,$textColor="#FF0000"


    
$isWaterImage FALSE

    
$formatMsg "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。"


    
//读取水印文件 
    
if(!empty($waterImage) && file_exists($waterImage
)) { 
        
$isWaterImage TRUE

        
$water_info getimagesize($waterImage
); 
        
$water_w    $water_info[0];
//取得水印图片的宽 
        
$water_h    $water_info[1];
//取得水印图片的高 

        
switch($water_info[2])  {   
//取得水印图片的格式  
            
case 1:$water_im imagecreatefromgif($waterImage
);break; 
            case 
2:$water_im imagecreatefromjpeg($waterImage
);break; 
            case 
3:$water_im imagecreatefrompng($waterImage
);break; 
            default:die(
$formatMsg
); 
        } 
    } 

    
//读取背景图片 
    
if(!empty($groundImage) && file_exists($groundImage
)) { 
        
$ground_info getimagesize($groundImage
); 
        
$ground_w    $ground_info[0];
//取得背景图片的宽 
        
$ground_h    $ground_info[1];
//取得背景图片的高 

        
switch($ground_info[2]) {   
//取得背景图片的格式  
            
case 1:$ground_im imagecreatefromgif($groundImage
);break; 
            case 
2:$ground_im imagecreatefromjpeg($groundImage
);break; 
            case 
3:$ground_im imagecreatefrompng($groundImage
);break; 
            default:die(
$formatMsg
); 
        } 
    } else { 
        die(
"需要加水印的图片不存在!"
); 
    } 

    
//水印位置 
    
if($isWaterImage) { 
//图片水印  
        
$w $water_w

        
$h $water_h

        
$label "图片的"

    } else {  
//文字水印 
        
$temp imagettfbbox(ceil($textFont*2.5),0,"./cour.ttf",$waterText);
//取得使用 TrueType 字体的文本的范围 
        
$w $temp[2] - $temp[6
]; 
        
$h $temp[3] - $temp[7
]; 
        unset(
$temp
); 
        
$label "文字区域"

    } 
    if( (
$ground_w<$w) || ($ground_h<$h
) ) { 
        echo 
"需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!"

        return; 
    } 
    switch(
$waterPos
) { 
        case 
0:
//随机 
            
$posX rand(0,($ground_w $w
)); 
            
$posY rand(0,($ground_h $h
)); 
            break; 
        case 
1:
//1为顶端居左 
            
$posX 0

            
$posY 0

            break; 
        case 
2:
//2为顶端居中 
            
$posX = ($ground_w $w) / 2

            
$posY 0

            break; 
        case 
3:
//3为顶端居右 
            
$posX $ground_w $w

            
$posY 0

            break; 
        case 
4:
//4为中部居左 
            
$posX 0

            
$posY = ($ground_h $h) / 2

            break; 
        case 
5:
//5为中部居中 
            
$posX = ($ground_w $w) / 2

            
$posY = ($ground_h $h) / 2

            break; 
        case 
6:
//6为中部居右 
            
$posX $ground_w $w

            
$posY = ($ground_h $h) / 2

            break; 
        case 
7:
//7为底端居左 
            
$posX 0

            
$posY $ground_h $h

            break; 
        case 
8:
//8为底端居中 
            
$posX = ($ground_w $w) / 2

            
$posY $ground_h $h

            break; 
        case 
9:
//9为底端居右 
            
$posX $ground_w $w

            
$posY $ground_h $h

            break; 
        default:
//随机 
            
$posX rand(0,($ground_w $w
)); 
            
$posY rand(0,($ground_h $h
)); 
            break;     
    } 

    
//设定图像的混色模式 
    
imagealphablending($ground_imtrue
); 

    if(
$isWaterImage) { 
//图片水印 
        
imagecopy($ground_im$water_im$posX$posY00$water_w,$water_h);
//拷贝水印到目标文件         
    
} else {
//文字水印
        
if( !empty($textColor) && (strlen($textColor)==7
) ) { 
            
$R hexdec(substr($textColor,1,2
)); 
            
$G hexdec(substr($textColor,3,2
)); 
            
$B hexdec(substr($textColor,5
)); 
        } else { 
            die(
"水印文字颜色格式不正确!"
); 
        } 
        
imagestring $ground_im$textFont$posX$posY$waterTextimagecolorallocate($ground_im$R$G$B
));         
    } 

    
//生成水印后的图片 
    
@unlink($groundImage
); 
    switch(
$ground_info[2]) {
//取得背景图片的格式 
        
case 1:imagegif($ground_im,$groundImage
);break; 
        case 
2:imagejpeg($ground_im,$groundImage
);break; 
        case 
3:imagepng($ground_im,$groundImage
);break; 
        default:die(
$errorMsg
); 
    } 

    
//释放内存 
    
if(isset($water_info)) unset($water_info
); 
    if(isset(
$water_im)) imagedestroy($water_im
); 
    unset(
$ground_info
); 
    
imagedestroy($ground_im
); 

//水印函数完


//存在则移动完在上传
$goodupfile=@move_uploaded_file($upfiletmp,$bigaddrname.$exname
);
if (!
$goodupfile
){
die(
"<div align="center">上传图片失败<a href="javascript:history.back();">点击返回</a></div>"
);
}else{ 
  
//文字水印 
    
imageWaterMark($bigaddrname.$exname,5,"",$fontname,5,"#FF0000"
); 

    
//图片水印 
    //imageWaterMark($bigaddrname.$exname,5,$imgaddr); 
//结束水印部分===================================
    

//缩略图部分------------------------------------------------------------
//判断缩略图大小函数-----
    
function ResizeImage($im,$maxwidth,$maxheight,$name
){ 
    
$width imagesx($im
); 
    
$height imagesy($im
); 
    if((
$maxwidth && $width $maxwidth) || ($maxheight && $height $maxheight
)){ 
        if(
$maxwidth && $width $maxwidth
){ 
            
$widthratio $maxwidth/$width

            
$RESIZEWIDTH=true

        } 
        if(
$maxheight && $height $maxheight
){ 
            
$heightratio $maxheight/$height

            
$RESIZEHEIGHT=true

        } 
        if(
$RESIZEWIDTH && $RESIZEHEIGHT
){ 
            if(
$widthratio $heightratio
){ 
                
$ratio $widthratio

            }else{ 
                
$ratio $heightratio

            } 
        }elseif(
$RESIZEWIDTH
){ 
            
$ratio $widthratio

        }elseif(
$RESIZEHEIGHT
){ 
            
$ratio $heightratio

        } 
        
$newwidth $width $ratio

        
$newheight $height $ratio

        if(
function_exists("imagecopyresampled"
)){ 
              
$newim imagecreatetruecolor($newwidth$newheight
); 
              
imagecopyresampled($newim$im0000$newwidth$newheight$width$height
); 
        }else{ 
            
$newim imagecreate($newwidth$newheight
); 
              
imagecopyresized($newim$im0000$newwidth$newheight$width$height
); 
        } 
        
ImageJpeg ($newim,$smalladdrname.$name.".jpg"
); 
        
ImageDestroy ($newim
); 
    }else{ 
        
ImageJpeg ($im,$smalladdrname.$name.".jpg"
); 
    } 
    } 
    
//生成部分
    
if($_FILES['image']['size'
]){ 
    if(
$_FILES['image']['type'] == "image/pjpeg"
){ 
        
$im imagecreatefromjpeg($bigaddrname.$exname
); 
    }elseif(
$_FILES['image']['type'] == "image/x-png"
){ 
        
$im imagecreatefrompng($bigaddrname.$exname
); 
    }elseif(
$_FILES['image']['type'] == "image/gif"
){ 
        
$im imagecreatefromgif($bigaddrname.$exname
); 
    } 
    if(
$im
){ 
        if(
file_exists($smalladdrname.".jpg"
)){ 
            
unlink($smalladdrname.".jpg"
); 
        } 
        
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$smalladdrname
); 
        
ImageDestroy ($im
); 
    } 
    }
    echo 
"<div align='center'><a href='javascript:window.history.back()'>上传成功</a></div>"
;
}
//缩略图结束----------------------------------------------------- 
  
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input type="file" name="image" />
  <input type="hidden" name="MAX_FILE_SIZE" value="<?=1024*100?>">
  <input type="submit" name="Submit" value="上传图片" />
</form>

只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。利用PHP创建动态图像是相当容易的一件事情。下面,笔者将详细介绍如何实现。

  在使用基本的图像创建函数之前,需要安装GD库文件。如果要使用与JPEG有关的图像创建函数,还需要安装jpeg-6b,如果要在图像中使用Type 1型字体,则必须安装t1lib。

  在建立图像创建环境之前,还需要做一些准备工作。首先,安装t1lib接着安装jpeg-6b,然后再安装GD库文件。在安装时一定要按这里给定的顺序进行安装,因为在编译GD入库时会用到jpeg-6b,如果没有安装jpeg-6b,在编译时就会出错。

  在安装完这三个组件后,还需要重新配置一次PHP,这也是你对采用DSO方式安装PHP感到庆幸的地方之一。运行make clean,然后在当前的配置中添加下面的内容:

  --with-gd=[/path/to/gd]

  --with-jpeg-dir=[/path/to/jpeg-6b]

  --with-t1lib=[/path/to/t1lib]

  完成添加后执行make命令,然后再执行make install命令,重新启动Apache后运行phpinfo()来检查一下新的设置是否生效了。现在,我们就可以开始图像创建工作了。

  根据所安装的GD库文件的版本将决定你是否能创建GIF或PNG格式的图形文件。如果安装的是gd-1.6或以前的版本,可以使用GIF格式的文件但不能创建PNG格式,如果安装的是gd-1.6以后的版本,可以创建PNG文件但不能创建GIF格式的文件。

  创建一幅简单的图像也需要用到许多的函数,我们将一步一步地进行说明。

  在下面的例子中,我们将创建一个PNG格式的图像文件,下面的代码是一个包含所创建的图像的MIME类型的头部:

  <? header ("Content-type: image/png");

  使用ImageCreate()创建一个代表空白图像的变量,这个函数要求以像素为单位的图像大小的参数,其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250×250的图像,就可以使用下面的语句:

  $newImg = ImageCreate(250,250);

  由于图像还是空白的,因此你可能会希望用一些彩色来填充它。你需要首先使用ImageColorAllocate()函数用其RGB值为这种颜色指定一个名字,这一函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如果要定义天蓝色,可以使用如下的语句:

  $skyblue = ImageColorAllocate($newImg,136,193,255);

  接下来,需要使用ImageFill()函数用这种颜色填充这个图像,ImageFill()函数有几个版本,例如ImageFillRectangle()、ImageFillPolygon()等。为简单起见,我们通过如下的格式使用ImageFill()函数:

  ImageFill([image], [start x point], [start y point], [color])

  ImageFill($newImg,0,0,$skyblue);

  最后,在图像建立后释放图像句柄和所占用的内存:

  ImagePNG($newImg);

  ImageDestroy($newImg); ?>

  这样,创建图像的全部代码如下所示:

  <? header ("Content-type: image/png");

  $newImg = ImageCreate(250,250);

  $skyblue = ImageColorAllocate($newImg,136,193,255);

  ImageFill($newImg,0,0,$skyblue);

  ImagePNG($newImg);

  ImageDestroy($newImg);

  ?>

  如果把这个脚本文件保存为skyblue.php,并用浏览器访问它,我们会看到一个天蓝色的250×250的PNG格式的图像。

  我们还可以使用图像创建函数对图像进行处理,例如把一个较大图像作成一个小图像:

  假设你有一幅图像,想从中裁剪出一个35×35大小的图像。你所需要作的是创建一个35×35大小的空白图像,创建一个包含原来图像的图像流,然后把一个经过调整大小的原来的图像放到新的空白图像中。

  要完成这一任务的关键函数是ImageCopyResized(),它要求的格式如下所示:ImageCopyResized([new image handle],[original image handle],[new image X], [new Image Y], [original image X], [original image Y], [new image X], [new image Y], [original image X], [original image Y])。

  <? /*发送一个头部,以便让浏览器知道该文件所包含的内容类型*/

  header("Content-type: image/png");

  /*建立保存新图像高度和宽度的变量*/

  $newWidth = 35;

  $newHeight = 35;

  /*建立给定高度和宽度的新的空白图像*/

  $newImg = ImageCreate($newWidth,$newHeight);

  /*从原来较大的图像中得到数据*/

  $origImg = ImageCreateFromPNG("test.png");

  /*拷贝调整大小后的图像,使用ImageSX()、ImageSY()得到原来的图像在X、Y方面上的大小*/

  ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));

  /*创建希望得到的图像,释放内存*/

  ImagePNG($newImg);

  ImageDestroy($newImg); ?>

  如果把这一小段脚本保存为resized.php,然后用浏览器对它进行访问,就会看到一个35×35大小的PNG格式的图像。

SWF和Flash简介
SWF是Macromedia Flash用来在Internet上向用户传送图片、动画和声音的文件格式。Flash是你能够向用户提供一个丰富的和动态的界面。大约90%的Web用户不用安装浏览器插件就可以浏览SWF内容,超过2亿人下载了Flash播放器。Macromedia在1998年4月公开了SWF规范。在PHP4中加入SWF的支持。
PHP内建的动态生成图片的能力是一个吸引我的特征。它可以生成看起来更专业更让人舒适的报表和界面。一开始,我用充斥在网上的各种GD代码来创建图片来显示我的不同项目的数据。但我很快就被生成的图片的不确定搞烦了,决定试试看能不能用矢量图形来解决问题。我想你也会同意,结果看起来好多了。假如一个图片能代表一千个词,想象一下一幅Flash动画代表什么?
我将尽量使这个例子简单一些,只说说基础的东西。我的目的只是创建一个容纳GD生成的GIF和PNG图片的Drog in。你可以加入对它的扩展和增强,比如Flash赖以出名的各种可视效果。例如,你可以制作在载入页面时的图形淡入、飞舞,或者动态的显示几片雪花。你的想象力是对PHP的SWF函数的唯一限制。
怎样取得需要图形化的数据最好留给读者去练习。因为这篇文章是关于动态创建Flash文件的,我将在例子中使用一个假想的表作为数据集来创建它的图形化视图。你需要检查你的数据,决定采用一种最适合的图表形式。在多数情况下,饼图是一个合适的选择,这也是我的例子要采用的图表形式。折线图、柱状图或者面积图都可以用相似的方式创建。
在这个例子中,假定我们把一些包裹送到了几个城市,而我们要看看每个城市收到的包裹所占的比例。我们决定把数据存储在数据库“world”的表“city”中。让我们先建立这个表,并输入这个例子需要的数据。

#
# Table structure for table 'city'
#

DROP TABLE IF EXISTS city;
CREATE TABLE city (
city_id int(14) NOT NULL auto_increment,
city_name varchar(255) NOT NULL,
city_timestamp timestamp(14),
PRIMARY KEY (city_id)
);

#
# Dumping data for table 'city'
#

INSERT INTO city VALUES( '1', 'London', '20000917122625');
INSERT INTO city VALUES( '2', 'London', '20000917122626');
INSERT INTO city VALUES( '3', 'London', '20000917122626');
INSERT INTO city VALUES( '4', 'London', '20000917122627');
INSERT INTO city VALUES( '5', 'Paris', '20000917122631');
INSERT INTO city VALUES( '6', 'Paris', '20000917122632');
INSERT INTO city VALUES( '7', 'New York', '20000917122644');
INSERT INTO city VALUES( '8', 'New York', '20000917122645');
INSERT INTO city VALUES( '9', 'New York', '20000917122646');
INSERT INTO city VALUES( '10', 'New York', '20000917122646');
INSERT INTO city VALUES( '11', 'New York', '20000917122647');
INSERT INTO city VALUES( '12', 'Hong Kong', '20000917122654');


配置你的系统以使用SWF
我用的环境是RedHat Linux6.2, Apache 1.3.12, PHP 4.0.2(编译为Apache模块)。假如你在Windows中使用PHP,事情会有些不同。你需要下载或者编译一个Flash Dll,但是不需要修改代码。
PHP通过Paul Haeberli的libswf模块来提供创建Shockwave Flash 文件的能力。你需要从http://reality.sgi.com/grafica/flash/下载libswf。然后,你需要使用选项--with-swf[=DIR]来配置PHP,这里DIR是include和lib目录所在的目录。include目录下必须有swf.h文件,而lib目录下必须有libswf.a文件。当解压缩下载的libswf发布版本的时候,这两个文件会被解压缩到同一个目录。你需要把这两个文件移到正确的位置。完成后,目录结构应该像下面的样子:

/usr/local/swf/
/include/
swf.h
/lib/
libswf.a
/fonts
...

为了使SWF函数能正常工作,你需要复制/usr/local/swf/fonts/目录,以便web服务器能访问该目录(对apache和mod_php来说,最好的办法就是使用绝对路径,并把以上目录复制到apache的文档根目录下。)另外,在libswf的发布版本中有一个很小的c程序,能够把类型1的字体转换成Flash能用的字体。
因为我们要动态地创建和写SWF文件,所以web服务器需要在存储文件的目录有写权限。

让我们烤点甜饼(做饼图)
  成功地安装了PHP地Shockwave Flash支持后,就可以用PHP创建Shockwave文件了。学习的最好方法就是直接跳到程序去,所以下面就让我们看看程序。第一个文件包括怎样使用类的示例代码,同时也显示了如何将一个Flash文件嵌入到HTML文档中。

<?php

// include class needed for flash graph
include("class.pie.flash.php");

mysql_connect ("localhost", "root", "");

$query = "SELECT DISTINCT city_name, COUNT(city_id)
FROM city

php处理文件的上传是很简便的,但是假如要对上传的图片进行缩放处理的话,虽说能用GD来做,但是
要进行比较繁琐的处理。ImageMagick是一个图像处理包,一般的Linux软件包中都会有的。它包含了许
多处理图像的工具,它可以进行图像文件格式的转化还可以对图像进行各种处理,其中我们将用到它的
图像缩放功能。这个通过它的软件包中的工具convert来实现,这样来调用
        convert -geometry 宽x高 源文件 缩放后的文件
        
请在当前目录下建立一个images的目录,并且能让web执行用户可写,这个目录用来存放上载后的图片和

缩放的图片。
底下是一个简单小例子,包括图片上传和处理,在RedHat6.0 php3.0.12下测试通过。

uploadform.html:文件上传表单

<HTML>
<HEAD>
<TITLE>选择文件</TITLE>
</HEAD>
<BODY ALIGN="CENTER">
<FORM ENCTYPE="multipart/form-data" ACTION="upload.php3" METHOD=POST>
选择图片文件: <INPUT NAME="image" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>
</BODY>
</HTML>


upload.php3:处理上传后的图片文件

<html>
<head>
<title>处理</title>
</head>
<body>
<?
$flag = "true";
if(isset($image) && $image && 
        ($image_type = "image/gif" || $image_type = "image/png" 
                || $image_type = "image/pjpeg")){       //判定上载文件的格式等
        $dest_image = "./images/".$image_name;
        if(@copy($image,$dest_image)){  //拷贝上载文件到images目录下

           $small_image = "./images/small".$image_name;
           $exec_str = "/usr/bin/X11/convert -geometry 100x100 ".$dest_image." ".$small_image;             
           @exec($exec_str);       //进行图像的缩放
        }else
                $flag = "false";

}else{

        
        $flag = "false";
}

if( $flag == "false"){
        echo "error<p>";
        echo "<a href="uploadform.html">重新上载</a>";
}else{
        echo "<image src="$small_image">";
        echo "<image src="./images/$image_name">";
}       
?>
</body>
</html>

假如结合GetImageSize函数,我们还可以控制缩放的大小。结合数据库可以对图片文件进行索引或者存储等。
ImageMagick的功能是很强大的,不仅能对图片文件进行缩放,还有进行翻转、格式转化等等功能。
读者可以自己参看ImageMagick的帮助文件。

1.假如数据库中存放的是图片的路径,你取出数据库中的字段如$pic

然后 <img src="<?print $pic?>">就能显示了。

2.假如数据库中存放的是图片,最好是unix的平台,要不可能显示不出来 ,

你直接从库中取出图片就行了:

$query = "select pic from binary_data where id=$id";

$result = @MYSQL_QUERY($query);

$pic = @MYSQL_RESULT($result,0, "pic");

Header( "Content-type: $type");

echo $pic;//显示

[!--infotagslink--]

相关文章

  • php图片添加文字水印实现代码

    这篇文章主要为大家详细介绍了php图片添加文字水印实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-03-17
  • php 上传文件并生成缩略图代码

    if( isset($_FILES['upImg']) ) { if( $userGroup[$loginArr['group']]['upload'] == 0 ) { echo '{"error":"您所在的用户组无权上传图片!"}'; } else...2016-11-25
  • php 图片上传代码(具有生成缩略图与增加水印功能)

    这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能哦,可以说是一款完美的图片上传类哦。 代码如下 复制代码 ...2016-11-25
  • php给图片加文字水印与图片水印代码(1/2)

    这款程序给图片加文字水印时是调用 了C:\\WINDOWS\\Fonts\\\\SIMHEI.TTF字体,给图片加水印时就可以自定图片哦。 $image->wprint_img();//执行图片水印 $image->...2016-11-25
  • php支持生成缩略图文件上传代码

    <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1...2016-11-25
  • .net c# gif动画如何添加图片水印实现思路及代码

    本文将详细介绍下c#实现gif动画添加图片水印,思路很清晰,感兴趣的你可以参考下哈,希望可以帮助到你...2021-09-22
  • php图片上传类同时可生成缩略图与加水印

    这款图片上传代码可以把上传的图片增加水印,生成小图片,同时还可以生成文字水印。 代码如下 复制代码 class upimages { var $annexf...2016-11-25
  • Unity实现图片水印生成

    这篇文章主要为大家详细介绍了Unity实现图片水印生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • c#生成缩略图不失真的方法实例分享

    使用.net的方法GetThumbnailImage生成的缩略图失真严重,这里推荐一种不失真生成缩略图的方法...2021-09-22
  • C#图片处理3种高级应用

    本文介绍C#图片处理高级应用,这些功能并无多大技术含量。全部基于.Net Framework类库完成,代码中包含了C#图片处理的一些基础知识,与大家分享,个人能力有限,不足之处还请及时指正。...2020-06-25
  • 等比例生成缩略图的php程序

    等比例生成缩略图的php程序 这个程序很实现,但只是用来进来等比例生成缩略图哦,你要把文件上传到服务器,然后再由此函数来操作,有需要的朋友参考一下。 等比例生成缩...2016-11-25
  • php 上传图片自动生成缩略图

    一款实现的生成小图功能的实现代码,有需要的朋友可以参考,每个都有详细的说明参数。 代码如下 复制代码 <form action="uploads.php" method=...2016-11-25
  • 一款php按比例生成缩略图代码

    本文章里面image就是你要生成的图片地址哦,这是一php按比例生成缩略图代码,只要给你图片他就能生成指定大小的图片哦,并且不变形ekt 代码如下 复制代码 ...2016-11-25
  • Asp.net简单实现给图片增加文字水印

    这篇文章主要介绍了Asp.net简单实现给图片增加文字水印,需要的朋友可以参考下...2021-09-22
  • php实现图片添加文字水印程序代码

    使用过dedecms的朋友就会发现它可以实现图片上加图片水印也可以直接实现图片上加文本水印了,下面我来给大家介绍的是图片上加文字水印的方法,希望例子能帮助到各位。...2016-11-25
  • php使用GD库实现文字图片水印及缩略图教程

    缩略图可以通过gd库来实现,下面我们一起来看一个简单的php使用GD库实现文字图片水印及缩略图例子,希望此例子能够为大家带来有效的帮助。 我们要使用gd库就必须先...2016-11-25
  • php图片按比较生成缩略图片代码

    图片按在比较进行放大缩小,这得利用php教程 gd库的函数现实现,我们会利用到imagecreatetruecolor(),imagecopyresampled()来操作 function my_image_resize($src_file,...2016-11-25
  • 生成艺术字体图片水印代码

    代码如下 复制代码 //adv0.jpg就是背景图片,注意函数与图片格式对应 $im = imagecreatefromjpeg('/www/law/images/demo/adv0.jpg'); $...2016-11-25
  • C#.NET 图片水印添加代码

    这篇文章主要为大家详细介绍了C#.NET 图片水印添加代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • php 生成缩略图代码可自动填充空白处

    网站大多数生成缩略图都是按比例操作的,今天我们来看看可以固定图片大小">图片大小,不够的地方自动填充空白哦。有需要的朋友可以参考一下。 <?php教程 error_report...2016-11-25