本节课我们来学习一下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");