PHP实现随机生成水印图片功能的方法
这篇文章主要为大家详细介绍了PHP生成随机水印图片的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
基于PHP的GD图形库,自己生成一张图片。仅限初识GD库,实例学习。
一、需求
网站的布局用到了类似慕课网课程列表的风格,每一个课程是一个banner图,图下面是标题加简介。因为课程的数量较大没有为所有的课程设计专门的banner,所以需要按照一定的规则,来自己生成图片(本打算用p布局来解决,但p+img在响应式布局中不是很好控制)。
生成的效果图:
二、工具&素材
1.PHP开启GD图形库扩展
2.准备多个小的水印图
3.获取预生成图片的背景色RGB值
三、代码
生成图片的过程,代码中做了详细的注释。
class GenerateRandomImage { /** @var integer 图片宽度 */ public $imgWidth = 272; /** @var integer 图片高度 */ public $imgHeight = 162; /** @var 根据type不同来生成不同的背景颜色,目前留个type分别为蓝色、紫色、黄色、绿色、灰色、土黄色 */ public $type = ''; /** @var 图片上要显示的文字 */ public $text = ''; /** @var integer 图片上文字的字体大小 */ public $fontSize = 16; public function __construct($type, $text) { $this->type = $type; $this->text = $text; } /** * 创建生成随机图片 * @author bignerd * @since 2017-03-21T14:49:41+0800 */ public function createImg() { /** @var 创建一个指定图片大小的空调色板 $image = imagecreate($this->imgWidth, $this->imgHeight); $rgb = $this->getBackground($this->type); /** @var 为图片创建一个背景色 */ $backgroundColor = imagecolorallocate($image, $rgb['r'], $rgb['g'], $rgb['b']); /** @var 创建文字白色字体 */ $textColor = imagecolorallocate($image, 255, 255, 255); /** @var 字体文件路径 */ $font = $_SERVER['DOCUMENT_ROOT'].'/public/font/simhei.ttf'; $x = 18;//文字起始位置x坐标 $y = 50;//文字起始位置y坐标 /** 文字写入图片 */ $angle = 0;//角度0 imagettftext($image, $this->fontSize, $angle, $x, $y, $textColor, $font, $this->text); /** @var 水印图片路径 **/ $waterImgPath = $this->randWaterImage(); /** @var 获取图片信息,返回值$waterInfo[2] 为图片类型常量 */ $waterInfo = getimagesize($waterImgPath); /** @var 将图片类型常量转换为真正的类型,如png */ $waterType = image_type_to_extension($waterInfo[2], false);//获取文件类型 $createImageFunc = 'imagecreatefrom'.$waterType; /** @var 创建一个水印图片的副本 $createImageFunc 为根据图片类型来动态生成预调用的创建图片函数*/ $mask = $createImageFunc($waterImgPath); $posX = $this->imgWidth - $waterInfo[0];//水印图片,在目标图片中的位置的x坐标 $posY = $this->imgHeight - $waterInfo[1];//水印图片,在目标图片中的位置的y坐标 /** http请求响应类型设置为 image/png 以便直接显示为图片 */ header("Content-Type:image/png"); /** 水印图片复制到创建的image */ imagecopy($image, $mask, $posX, $posY, 0, 0, $waterInfo[0], $waterInfo[1]); imagepng($image);//输入图片到浏览器或者文件 imagedestroy($image);//销毁图片 } /** * 图片背景颜色的rgb值 * @author bignerd * @since 2017-03-21T14:50:16+0800 */ public function getBackground() { $background = [ '1'=>['r'=>0, 'g'=>160,'b'=>233], '2'=>['r'=>198,'g'=>0, 'b'=>110], '3'=>['r'=>237,'g'=>109,'b'=>0], '4'=>['r'=>33, 'g'=>148,'b'=>75], '5'=>['r'=>63, 'g'=>58, 'b'=>57], '6'=>['r'=>202,'g'=>162,'b'=>101], ]; return $background[$this->type]; } /** * 随机水印图片路径 * @author bignerd * @since 2017-03-21T14:51:00+0800 * @return 路径 */ public function randWaterImage() { $folder = [ '1'=>'product','2'=>'team','3'=>'architecture','4'=>'developer','5'=>'test','6'=>'engineer' ]; $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/public/images/role/'.$folder[$this->type].'/'.rand(1,38).'.png'; return $targetFolder; } } $image = new GenerateRandomImage(1,"扛得住的MySql数据架构"); $image->createImg();
这样我们就可以直接在页面中使用 来直接显示图片。
注意:过程中遇到过一个问题:如果水印图片是透明的png图片,那将水印图片复制到image中时,会显示为白色背景,与我们设定 的image背景无法透明融合,所以对随机的水印图片也需要做同样的颜色处理。
四、总结
这个小示例用简单的步骤来生成一张图片,直接显示在浏览器,也可以给imagepng加第二参数,也就是路径,以保存图片。所以学会示例中的几个GD库中的方法,就可以实现创建图片、为图片添加文字水印、或图片水印。
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐:
Atas ialah kandungan terperinci PHP实现随机生成水印图片功能的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.
