Maison >développement back-end >Problème PHP >Comment nginx ajoute-t-il un filigrane aux images via un proxy PHP (code détaillé)
Cet article vous apporte des connaissances pertinentes sur nginxcomment ajouter des filigranes aux images via PHPproxy, ainsi que des problèmes connexes sur la façon de l'appeler. Cela peut être résolu grâce à des exemples de code. J'espère que cela sera utile à tout le monde.
(Tutoriels recommandés : tutoriel nginx, tutoriel vidéo PHP)
location ~ /image/.*\.(gif|jpg|jpeg|png)$ { proxy_pass http://127.0.0.1:8888/test/watermark?url=$request_uri; }
/img/
Faites correspondre le préfixe du répertoire à proxy, $ request_uri
Le paramètre est le chemin de l'image à laquelle accéder. /img/
匹配要代理的目录前缀,$request_uri
参数为访问的图片路径。
/** 水印类 * Class Watermark * @package app\test */ class Watermark { /** 合成图片水印 * @param string $dstImage 原图片 * @param string $waterImg 水印图 */ public static function imageMarking($dstImage, $waterImg){ //获取图片信息 $dstInfo = getimagesize($dstImage); $waterInfo = getimagesize($waterImg); //创建图像 $dstImgObj = self::imageCreateFrom($dstImage, $dstInfo[2]); $waterImgObj = self::imageCreateFrom($waterImg, $waterInfo[2]); //合成水印 imagecopyresized($dstImgObj,$waterImgObj,0, 0,0,0,$dstInfo[0], $dstInfo[1],$waterInfo[0],$waterInfo[1]); //输出图片 self::imageOut($dstImgObj,$waterInfo[2]); //销毁资源对象 imagedestroy($dstImgObj); imagedestroy($waterImgObj); } /** 生成图片对象 * @param string $imgFile 图片路径 * @param string $type 图片类型 * @return false|\GdImage|resource */ private static function imageCreateFrom($imgFile, $type) { switch ($type) { case IMAGETYPE_GIF: return imagecreatefromgif($imgFile); case IMAGETYPE_JPEG: return imagecreatefromjpeg($imgFile); case IMAGETYPE_PNG: return imagecreatefrompng($imgFile); default : //其他格式 } } /** 输出图片 * @param string $imageObj * @param string $type */ private static function imageOut($imageObj,$type){ switch ($type) { case 1: header("Content-Type: image/gif"); imagegif($imageObj); break; case 2: header("Content-Type: image/jpeg"); imagejpeg($imageObj); break; case 3: header("Content-Type: image/png"); imagepng($imageObj); break; default: //其他格式 } } }
public function watermark(){ //图片路径前缀 $image = '/data/img/' . input('url'); self::imageMarking($image,'watermark.png'); exit; }
nginx
水平好的,可以试着用 http_image_filter_module
rrreeeExemple d'appelrrreeenginx
Si vous êtes bon dans ce domaine, vous pouvez essayer d'utiliser le module http_image_filter_module
pour ajouter des filigranes. un geste impuissant pour moi
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!