利用gd库处理图片

2020-07-02 14:55:01 浏览数 (2)

本节课我们来学习一下PHP处理图片,包含验证码、打水印、缩略图、拼图、截图等功能

一、GD库

imagecreatefromstring — 从字符串中的图像流新建一图像

imagecreatefrompng/jpg/gif — 由文件或 URL 创建一个新图象。

imagecreatetruecolor — 新建一个真彩色图像

imagecopyresampled — 重采样拷贝部分图像并调整大小

imagecrop — 裁剪图片

imagescale-缩放

imagecopymerge — 拷贝并合并图像的一部分

imagejpeg — 输出图象到浏览器或文件。

imagefttext — 使用 FreeType 2 字体将文本写入图像

二、ImageMagic

建议在虚拟机中安装centos,测试开发

三、验证码的思路

根据问题和答案,利用session存储答案。

比如:补充以下成语,破釜沉__ 答案:舟

1 9=?

答案 10

利用imagefttext生成文字图片

代码语言:javascript复制
<?php


//缩放
function thumb($img){
$im=imagecreatefromjpeg($img);
$sim=imagescale($im,200,-1,IMG_BICUBIC_FIXED );
header("Content-type:image/png");
imagejpeg($sim);
}
 
function crop($img){
  $im=imagecreatefromjpeg($img);
$size = min(imagesx($im), imagesy($im));
$im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $size, 'height' => $size]);
header("Content-type:image/png");
imagejpeg($im2);
}
 
//打水印
function imgMerge($to,$from,$tx,$ty,$fx,$fy,$fw,$fh,$pct=100){
  $timg=imagecreatefromjpeg($to);
  $fimg=imagecreatefromjpeg($from);
  imagecopymerge($timg,$fimg,$tx,$ty,$fx,$fy,$fw,$fh,$pct);
  imagejpeg($timg,"merge.jpg");
}
//旋转
function imgRoate($img,$deg){
  $im=imagecreatefromjpeg($img);
  $im2= imagerotate($im, $deg, 0);
  header("Content-type:image/jpeg");
  imagejpeg($im2);
}
//正方形缩略图
function thumb100($img){
  $im=imagecreatefromjpeg($img);
  $w=100;
  $sx=imagesx($im);
  $sy=imagesy($im);
  if($sx>$sy){
    $w=$sx*100/$sy;
  }
  $sim=imagescale($im,$w,-1,IMG_BICUBIC_FIXED );
  $im2 = imagecrop($sim, ['x' => 0, 'y' => 0, 'width' => 100, 'height' => 100]);
  header("Content-type:image/png");
  imagejpeg($im2);
}
imgMerge("img.jpg","mao2.jpg",0,100,0,0,100,100,80);
//imgRoate("img.jpg",60);
//thumb100("img.jpg");

0 人点赞