zoukankan      html  css  js  c++  java
  • php缩略图和添加水印

    php图像方面的应用一般包括生成验证码和缩略图添加水印。

    今天主要写了一下图片的缩略和添加水印,功能基本上都实现了。作为一个基本的小case还是没有什么问题的。 

    在完成缩略和添加水印的过程中主要用到的函数包括: 

    图片缩略用到的php函数 :

    basename($path);//该函数返回文件路径中的文件名

    dirname($path);//返回文件中的目录部分

    imagettftext($image,$fontsize,0,30,100,$tc,$fontpath,$str);//将文字写入图片

    $res=imagecopyresized($newImage, $srcImage,0,0,0,0,$newWidth,$newHeight,$width,$height);//生成新图像


    示例代码如下:

    <?php 
    class ServiceImage{
    /*
    * @生成缩略图
    * Lixuefeng
    * $rate缩放比例
    * $src原图片文件
    * $dis生成的新图片文件
    */
    public function thumbnail($rate,$src){
    $absolutePath=ServiceTable::YII_PHYSICAL_PATH;//系统配置的物理路径根目录
    $psrc=$absolutePath.$src;//包含文件名称的物理路径全名称
    if(!realpath($psrc)){
    die("图片路径错误!");
    }
    $imageInfo=getimagesize($psrc);//获取文件的信息,包括图片长宽高,图片类型
    list($width,$height)=$imageInfo;//将图片长宽高分别赋值
    $imageType=$imageInfo['mime'];//获取图片mine类型
    $newWidth=$width*$rate;
    $newHeight=$height*$rate;//根据缩放比例设定新生成图片的长宽高
    $newImage=ImageCreateTrueColor($newWidth,$newHeight);//根据新图片长宽高生成新图片索引
    $srcImage=$this->getImageByType($imageType, $psrc);//根据图片类型生成新的图片对象
    $res=imagecopyresized($newImage, $srcImage,0,0,0,0,$newWidth,$newHeight,$width,$height);//生成新图像
    $res=imagejpeg($newImage,$psrc);//生成新图像
    if($res){
    return $src;
    }else{
    return false;
    }
    }
    public function getImageByType($imageType,$src){
    switch($imageType){
    case 'image/jpeg':
    return imagecreatefromjpeg($src);
    break;
    case 'image/png':
    return imagecreatefrompng($src);
    break;
    case 'image/gif':
    return imagecreatefromgif($src);
    break;
    case 'image/bmp':
    return imagecreatefromwbmp($src);
    break;
    default:
    die("图片类型错误");
    }
    }
    public function addWatermark($src,$font=null,$str,$fontsize){
       $absolutePath=ServiceTable::YII_PHYSICAL_PATH;//系统配置的物理路径根目录
    $psrc=$absolutePath.$src;
    $imageInfo=getimagesize($psrc);
    $fileName=basename($psrc);
    $path=dirname($psrc);
    $newPsrc=$path.'/thumb/'.$fileName;
    $imageType=$imageInfo['mime'];
    $image=$this->getImageByType($imageType,$psrc);
    $relitivePath=dirname($src).'/thumb/'.$fileName;//存储相对路径
    if(!$font){
    $fontpath='c:/windows/fonts/arial.ttf';
    }else{
    $fontpath=$font;
    }
    $tc=imagecolorallocate($image,255,255, 255);//设置文字颜色
    imagettftext($image,$fontsize,0,30,100,$tc,$fontpath,$str);//将文字写入图片
    $res=imageJpeg($image,$newPsrc);
    if($res){
    return $relitivePath;
    }else{
    return false;
    }
    }
    }
  • 相关阅读:
    echarts基础使用
    将数据表中的热词统计结果用echarts热词云展示
    LInux下bash: wget: command not found解决方法
    利用Jieba对txt进行分词操作并保存在数据库中
    idea运行Guns示例demo
    浅谈一下mshta在CVE201711882里的命令构造
    CVE201711882 POC 全版本通杀
    本地复现Flash 0day漏洞(CVE20184878)
    Oracle安装错误
    oracle远程连接服务器出现 ORA12170 TNS:连接超时 解决办法
  • 原文地址:https://www.cnblogs.com/php321/p/3340445.html
Copyright © 2011-2022 走看看