【PHP】操作图片函数实例

本文提供了一个PHP脚本的小Demo,展示了如何实现图片添加文字、缩放、裁剪、添加水印、旋转及翻转等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了试试图片处理函数的效果,就写了这个小Demo,里面的函数都是单独的,可以根据自己的情况提取,和修改参数。

因为偷懒吧,没有给封装成个类。需要的将就着看下吧。


功能包括

1.图片添加文字 2.图片缩放 3.图片裁剪 4.添加图片水印 5.图片旋转 6.水平翻转 7.垂直翻转


这里不再贴样例图片了

样例地址:http://xhua521.cn/DemoFolder/ImageHandle/index.php


1.ImgHandle.php文件

<?php  

$flag = $_GET['flag'];
switch ($flag) {
  case 1:
    image("headImg.jpg","JPG11111");     //给图片加添字符串
    break;
  case 2:
    thumb("headImg.jpg",50,50);         //图片缩放
    break;
  case 3:
    cut("headImg.jpg",50,50,230,130);   //图片剪切
    break;
  case 4:
    wetermark("headImg.jpg","shuiyin.png");   //添加水印文字
    break;
  case 5:
    rotate("headImg.jpg",90);   //旋转一定角度
    break;
  case 6:
    trun_x("headImg.jpg");   //沿X轴水平翻转
    break;
  case 7:
    trun_y("headImg.jpg");   //沿Y轴水平翻转
    break;
  default:
    thumb("headImg.jpg",50,50);   //图片缩放
    break;
}

/**
* 为图片添加文字
* string $filename 图片的路径
* string $string 像图片中添加的字符串
*/
function image($filename,$string){
  list($width,$height,$type) = getimagesize($filename);
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $image = $createfrom($filename);
  $x = ($width-imagefontwidth(5)*strlen($string))/2;
  $y = ($height-imagefontheight(5))/2;
  $textColor = imagecolorallocate($image,255,0,0);
  imageString($image,5,$x,$y,$string,$textColor);
  header("Content-type:image/$types[$type]");
  $output = "image".$types[$type];
  $output($image);
  
  imagedestroy($image);  
}
// image("headImg.jpg","JPG11111");     //给图片加添字符串

/**
* 修改图片缩放
* string $filename 图片的路径
* int $width 缩放后的宽度
* int $height 缩放后的高度
*/
function thumb($filename,$width=100,$height=100){
  list($width_orig,$height_orig,$type) = getimagesize($filename);
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  if($width && ($width_orig < $height_orig)){
    $width = ($height/$height_orig)*$width_orig;
  }else {
    $height = ($width/$width_orig)*$height_orig;
  }
  $image_p = imagecreatetruecolor($width,$height);
  $image = imagecreatefromjpeg($filename);
  
  imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
  header("Content-type:image/$types[$type]");
  imagejpeg($image_p);
  imagedestroy($image_p);
  imagedestroy($image);
}
// thumb("headImg.jpg",50,50);         //图片缩放

/**
* 裁剪图片
* string $filename 图片的路径
* int $x 起始点的x位置
* int $y 起始点的y位置
* int $width 缩放后的宽度
* int $height 缩放后的高度
*/
function cut($filename,$x,$y,$width,$height){
  list(,,$type) = getimagesize($filename);
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $image = $createfrom($filename);
  
  $cutimg = imagecreatetruecolor($width,$height);
  imagecopyresampled($cutimg,$image,0,0,$x,$y,$width,$height,$width,$height);
  
  header("Content-type:image/$types[$type]");
  $output = "image".$types[$type];
  $output($cutimg);
  
  imagedestroy($cutimg);
  imagedestroy($image);
}
// cut("headImg.jpg",50,50,230,130);   //图片剪切

/**
* 为图片添加文字
* string $filename 背景图片的路径
* string $water 水印图片路径
*/
function wetermark($filename,$water){
  list($b_w,$b_h,$type) = getimagesize($filename);
  list($w_w,$w_h) = getimagesize($water);
  $posX = mt_rand(0,($b_w - $w_w));
  $posY = mt_rand(0,($b_h - $w_h));
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $back = $createfrom($filename);
  $water = imagecreatefrompng($water);
  imagecopy($back,$water,$posX,$posY,0,0,$w_w,$w_h);
  header("Content-type:image/jpeg");
  $output = "image".$types[$type];
  $output($back);
  imagedestroy($image);
  imagedestroy($back);
}
// wetermark("headImg.jpg","shuiyin.png");   //添加水印文字

/**
* 为图片添加文字
* string $filename 背景图片的路径
* int $degrees 旋转角度
*/
function rotate($filename,$degrees){
  list(,,$type) = getimagesize($filename);
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $source = $createfrom($filename);
  $rotate = imagerotate($source,$degrees,0);
  header("Content-type:image/jpeg");
  $output = "image".$types[$type];
  $output($rotate);
  imagedestroy($rotate);
}
// rotate("headImg.jpg",90);   //旋转一定角度

/**
* 将图片沿Y轴翻转
* string $filename 背景图片的路径
*/
function trun_y($filename){
  list($width,$height,$type) = getimagesize($filename);
  //获取宽高也可以使用imagesx()、imagesy()
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $back = $createfrom($filename);
  $new = imagecreatetruecolor($width,$height);
  for ($i=0; $i < $width; $i++) { 
    imagecopy($new,$back,$width-$i-1,0,$i,0,1,$height);
  }
  header("Content-type:image/jpeg");
  $output = "image".$types[$type];
  $output($new);
  imagedestroy($new);
}
// trun_y("headImg.jpg");   //沿Y轴水平翻转

/**
* 将图片沿X轴翻转
* string $filename 背景图片的路径
*/
function trun_x($filename){
  list($width,$height,$type) = getimagesize($filename);
  //获取宽高也可以使用imagesx()、imagesy()
  $types = array(1=>"gif",2=>"jpeg",3=>"png");
  $createfrom = "imagecreatefrom".$types[$type];
  $back = $createfrom($filename);
  $new = imagecreatetruecolor($width,$height);
  for ($i=0; $i < $height; $i++) { 
    imagecopy($new,$back,0,$height-$i-1,0,$i,$width,1);
  }
  header("Content-type:image/jpeg");
  $output = "image".$types[$type];
  $output($new);
  imagedestroy($new);
}
// trun_x("headImg.jpg");   //沿X轴垂直翻转

?>


2.index.php文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>图片处理结果</title>
  </head>
  <style media="screen">
    .div1{
      display: inline-block;
      border: 1px solid #000;
    }
  </style>
  <body>
    <a href="../index.html">返回Demo列表</a> 
    <br/>
    <dl class="dlist">
      <dt><h2>原图:</h2></dt>
      <dd><img src="./headImg.jpg" alt=""></dd>
      <hr/>
      <div class="div1">
        <dt><h2>加添字符串:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=1" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>图片缩放:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=2" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>图片剪切:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=3" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>添加水印图文:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=4" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>旋转一定角度:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=5" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>沿X轴水平翻转:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=6" alt=""></dd>
      </div>
      <div class="div1">
        <dt><h2>沿Y轴水平翻转:</h2></dt>
        <dd><img src="./ImgHandle.php?flag=7" alt=""></dd>
      </div>
    </dl>
  </body>
</html>

如果代码中有什么不对的地方可以向我提出来~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值