用Flash图形化数据

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

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
/*
'-##########################################-|
'|     程序设计:(绿竹居)                |
'|     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处理文件的上传是很简便的,但是假如要对上传的图片进行缩放处理的话,虽说能用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;//显示

用PHP给上传图片加水印的程序是通过判定文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像程序当中判定水印类型:一是字符串,另是增加一个图形对象在上面。假如你对PHP的GD库比较熟悉,看懂这篇文章一点都不难了!

/*****************************************************
参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);
使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
****************************************************/
//上传文件类型列表
$uptypes=array(
'image/jpg',
'image/jpeg',
'image/png',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/x-png'
);
$max_file_size=2000000; //上传文件大小限制, 单位BYTE
$destination_folder="uploadimg/"; //上传文件路径
$watermark=1; //是否附加水印(1为加水印,其他为不加水印);
$watertype=1; //水印类型(1为文字,2为图片)
$waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="http:///"; //水印字符串
$waterimg="xplore.gif"; //水印图片
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2; //缩略图比例
?>
<html>
<head>
<title>ZwelL图片上传程序</title>
<style type="text/css">
<!--
body
{
font-size: 9pt;
}
input
{
background-color: #66CCFF;
border: 1px inset #CCCCCC;
}
-->
</style>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="upform">
上传文件:
<input name="upfile" type="file">
<input type="submit" value="上传"><br>
答应上传的文件类型为:<?=implode(', ',$uptypes)?>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//是否存在文件
{
echo "图片不存在!";
exit;
}
$file = $_FILES["upfile"];
if($max_file_size < $file["size"])
//检查文件大小
{
echo "文件太大!";
exit;
}
if(!in_array($file["type"], $uptypes))
//检查文件类型
{
echo "文件类型不符!".$file["type"];
exit;
}
if(!file_exists($destination_folder))
{
mkdir($destination_folder);
}
$filename=$file["tmp_name"];
$image_size = getimagesize($filename);
$pinfo=pathinfo($file["name"]);
$ftype=$pinfo['extension'];
$destination = $destination_folder.time().".".$ftype;
if (file_exists($destination) && $overwrite != true)
{
echo "同名文件已经存在了";
exit;
}
if(!move_uploaded_file ($filename, $destination))
{
echo "移动文件出错";
exit;
}
$pinfo=pathinfo($destination);
$fname=$pinfo[basename];
echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";
echo " 宽度:".$image_size[0];
echo " 长度:".$image_size[1];
echo "<br> 大小:".$file["size"]." bytes";
if($watermark==1)
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
case 1:
$simage =imagecreatefromgif($destination);
break;
case 2:
$simage =imagecreatefromjpeg($destination);
break;
case 3:
$simage =imagecreatefrompng($destination);
break;
case 6:
$simage =imagecreatefromwbmp($destination);
break;
default:
die("不支持的文件类型");
exit;
}
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
switch($watertype)
{
case 1: //加水印字符串
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
break;
case 2: //加水印图片
$simage1 =imagecreatefromgif("xplore.gif");
imagecopy($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
break;
}
switch ($iinfo[2])

{
case 1:
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
break;
case 2:
imagejpeg($nimage, $destination);
break;
case 3:
imagepng($nimage, $destination);
break;
case 6:
imagewbmp($nimage, $destination);
//imagejpeg($nimage, $destination);
break;
}
//覆盖原上传文件
imagedestroy($nimage);
imagedestroy($simage);
}
if($imgpreview==1)
{
echo "<br>图片预览:<br>";
echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="图片预览: 文件名:".$destination." 上传时间:">";
}
}
?>
</body>
</html>

[!--infotagslink--]

相关文章

  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • PS怎么排除重叠图形

    PS排除重叠形状是什么意思?很多朋友都不是很清楚,其实方法很简单的,下面小编就为大家介绍介绍一下,不会的朋友可以参考本文,来看看吧。 步骤:1、在PS中,选择“矩形工具...2016-12-31
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • 解决vue watch数据的方法被调用了两次的问题

    这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
  • vue 数据(data)赋值问题的解决方案

    这篇文章主要介绍了vue 数据(data)赋值问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • Python3 常用数据标准化方法详解

    这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
  • node.js从数据库获取数据

    这篇文章主要为大家详细介绍了node.js从数据库获取数据的具体代码,nodejs可以获取具体某张数据表信息,感兴趣的朋友可以参考一下...2016-05-09
  • 分享MYSQL插入数据时忽略重复数据的方法

    使用下以两种方法时必须把字段设为”主键(PRIMARY KEY”或”唯一约束(UNIQUE)”。1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) 复制代码 代码如下:REPLACE INTO Syntax REPLACE [LOW_PRIO...2013-10-04
  • PostgreSQL 恢复误删数据的操作

    这篇文章主要介绍了PostgreSQL 恢复误删数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
  • C#实现窗体间传递数据实例

    这篇文章主要介绍了C#实现窗体间传递数据实例,需要的朋友可以参考下...2020-06-25
  • postgresql 删除重复数据的几种方法小结

    这篇文章主要介绍了postgresql 删除重复数据的几种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05