zoukankan      html  css  js  c++  java
  • PHP从零单排(十八)图像处理

    1.打开现有的图像

    <?php
    header("Content-type:image/jpeg"); 
    $img=imagecreatefromjpeg("cc.jpg");
    imagejpeg($img);
    imagedestroy($img);
    ?

    >

    函数imagecreatefromjpeg()的參数即文件所在路径。返回值是參数所指图片的资源标识符。

    该函数时通过已有图像新建一个图像,并非单纯打开原图像本身。假设将图片的后缀名.jpg强制改为.png,即便是使用函数imagecreatefrompng()。也无法打开文件。由于图片本质还是jpg格式的图片。

    2.获取图片的相关属性

    <?php
    $img=imagecreatefromjpeg("cc.jpg");
    $x=imagesx($img);
    $y=imagesy($img);
    echo "图片cc.jpg的宽为:<b>$x</b> pixels";
    echo "<br/>";
    echo "<br/>";
    echo "图片cc.jpg的高为:<b>$y</b> pixels";
    ?

    >


    另外,通过一个不属于GD库的函数getimagesize(),能够取得图片的大小等相关属性,该函数的语法例如以下:

    array getimagesize(string $filename [, array &imageinfo])

    <?php
    $img_info=getimagesize("cc.jpg");
    for($i=0;$i<4;++$i)
    {
    	echo $img_info[$i];
    	echo "<br/>";	
    	}
    ?>
    第三个元素是图片的格式,它的取值含义例如以下所看到的:

    1:表示该图片是GIF格式

    2:表示该图片是JPG格式

    3:表示该图片是PNG格式

    4:表示该图片是SWF格式

    5:表示该图片是PSD格式

    6:表示该图片是BMP格式

    <?php
    $pic_name="ee.png";
    $pic_size=getimagesize($pic_name);
    ?

    > <img src="<?php echo $pic_name; ?

    >"<?

    php echo $pic_size[3]; ?>>


    3.对图片加水印效果

    ·获取要加入水印的图片的宽、高值

    ·确定图片大小是否满足水印文字大小

    ·确定水印效果在图片中的位置

    ·设定图像的混色模式

    ·生成水印效果

    ·释放资源

    <?

    php function makeimagewatermark($image,$pos,$water_text,$font_size,$color) { $font_type="c://WINDOWS//Fonts//SIMYOU.TTF"; if(!empty($image)&& file_exists($image)) { $img_info=getimagesize($image); $g_w=$img_info[0]; $g_h=$img_info[1]; switch($img_info[2]) { case 1: $img=imagecreatefromgif($image); break; case 2: $img=imagecreatefromjpeg($image); break; case 3: $img=imagecreatefrompng($image); break; default: die("Format Wrong"); } } else { die("Not exists!"); } $temp=imagettfbbox(ceil($font_size*2.5),0,$font_type,$water_text); $w=$temp[2]-$temp[6]; $h=$temp[3]-$temp[7]; if(($g_w<$w) || ($g_h<$h)) { echo "Too small!"; return; } switch($pos) { case 0: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; case 1: $pos_x=0; $pos_y=0; break; case 2: $pos_x=($g_w-$w)/2; $pos_y=($g_h-$h)/2; break; case 3: $pos_x=$g_w-$w; $pos_y=$g_h-$h; break; default: $pos_x=rand(0,($g_w-$w)); $pos_y=rand(0,($g_h-$h)); break; } imagealphablending($img,true);//设置图像混色模式 if(!empty($color) && (strlen($color)==7)) { $R=hexdec(substr($color,1,2)); $G=hexdec(substr($color,3,2)); $B=hexdec(substr($color,5)); } else { die("Format wrong!"); } $text_color=imagecolorallocate($img,$R,$G,$B); imagettftext($img,$font_size,0,$pos_x,$pos_y,$text_color,$font_type,$water_text); switch($img_info[2]) { case 1 : imagegif($img,$image); break; case 2 : imagejpeg($img,$image); break; case 3: imagepng($img,$image); break; default: die("Formate unSupport!"); } imagedestroy($img); } if(isset($_FILES) && !empty($_FILES['userfile'])&& $_FILES['userfile']['size']>0) {$uploadfile="./".time()."_".$_FILES['userfile']['name']; if(copy($_FILES['userfile']['tmp_name'],$uploadfile)) { makeimagewatermark($uploadfile,2,"Photo by Mac",16,"#43042A"); echo "<img src="".$uploadfile."" border="0">"; } else { echo "uploadWrong!<br/>"; } } ?> <html> <head> <title> 19.9.php </title> </head> <body> <form enctype="multipart/form-data" method="POST"> 选择上传图片:<input name="userfile" type="file"> <input type="submit" value="上传"> </form> </body> </html>


    4.生成已有图片的缩略图

    <?

    php header("Content-type:image/jpeg"); $img_name="cc.jpg"; $src_img=imagecreatefromjpeg($img_name); $ow=imagesx($src_img); $oh=imagesy($src_img); $nw=round($ow*200.0/$ow); $nh=round($oh*200.0/$oh); $desc_img=imagecreate($nw,$nh); imagecopyresized($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh); imagejpeg($desc_img); imagedestroy($desc_img); imagedestroy($src_img); ?>

    第一个和第二个參数各自是目标图像、原图像的标识符,接下来4个參数是目的图像和原图像的复制位置的坐标,最后4个參数是目的图像和原图像的复制区域的宽高。

    !使用函数imagecopyresampled()函数

    <?php 
    header("Content-type:image/jpeg");
    $img_name="cc.jpg";
    $percent=0.2;
    $src_img=imagecreatefromjpeg($img_name);
    $ow=imagesx($src_img);
    $oh=imagesy($src_img);
    $nw=$ow*$percent;
    $nh=$oh*$percent;
    $desc_img=imagecreatetruecolor($nw,$nh);
    imagecopyresampled($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh);
    imagejpeg($desc_img);
    imagedestroy($desc_img);
    imagedestroy($src_img);
    ?>




    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    shell
    梯度,也即该物理参数的变化率,导数
    一些石油类核心期刊
    泰勒展开
    向量范数
    添加打印机
    泛函
    9.3.4 BeaufitulSoup4
    9.3.3 scrapy 框架
    9.3.2 网页爬虫
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4612950.html
Copyright © 2011-2022 走看看