在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码。今天的内容主要就是和画图有关,所以最后我们也会做一个非常简单的图片验证码的例子。
创建图片并指定颜色
首先,我们要先创建一个图片的画布。就和 PhotoShop 一样,任何的绘图都要在一张画布下进行。
2024年10月14日
在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码。今天的内容主要就是和画图有关,所以最后我们也会做一个非常简单的图片验证码的例子。
首先,我们要先创建一个图片的画布。就和 PhotoShop 一样,任何的绘图都要在一张画布下进行。
2024年10月14日
源码如下:
<?php
class Captcha_code
{
var $width='60';
var $num='4';
var $height='20';
var $name='randcode';
public function __construct($conf="")
{
if($conf!="")
{
foreach($conf as $key=>$value)
2024年10月14日
本人后端程序员小学毕业, 水平有限,贻笑大方。
修改
vendor/topthink/think-image/src/Image.php 378行
/**
2024年10月14日
要在PHP中使用OpenCV去除图片水印,您需要执行以下步骤:
2024年10月14日
```php function pngMerge($o_pic,$out_pic){ $begin_r = 255; $begin_g = 250; $begin_b = 250; list($src_w, $src_h) = getimagesize($o_pic);// 获取原图像信息 宽高 $src_im = imagecreatefrompng($o_pic); //读取png图片 print_r($src_im); imagesavealpha($src_im,true);//这里很重要 意思是不要丢了$src_im图像的透明色 $src_white = imagecolorallocatealpha($src_im, 255, 255, 255,127); // 创建一副白色透明的画布 for ($x = 0; $x < $src_w; $x++) { for ($y = 0; $y < $src_h; $y++) { $rgb = imagecolorat($src_im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; if($r==255 && $g==255 && $b == 255){ imagefill($src_im,$x, $y, $src_white); //填充某个点的颜色 imagecolortransparent($src_im, $src_white); //将原图颜色替换为透明色 } if (!($r <= $begin_r && $g <= $begin_g && $b <= $begin_b)) { imagefill($src_im, $x, $y, $src_white);//替换成白色 imagecolortransparent($src_im, $src_white); //将原图颜色替换为透明色 } } } $target_im = imagecreatetruecolor($src_w, $src_h);//新图 imagealphablending($target_im,false);//这里很重要,意思是不合并颜色,直接用$target_im图像颜色替换,包括透明色; imagesavealpha($target_im,true);//这里很重要,意思是不要丢了$target_im图像的透明色; $tag_white = imagecolorallocatealpha($target_im, 255, 255, 255,127);//把生成新图的白色改为透明色 存为tag_white imagefill($target_im, 0, 0, $tag_white);//在目标新图填充空白色 imagecolortransparent($target_im, $tag_white);//替换成透明色 imagecopymerge($target_im, $src_im, 0, 0, 0, 0, $src_w, $src_h, 100);//合并原图和新生成的透明图 imagepng($target_im,$out_pic); return $out_pic; } $o_pic = '1.png'; $name = pngMerge($o_pic,'aaaa.png'); print_r($name); ```
2024年10月14日
上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能。不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用。毕竟现在的各种外挂软件已经能够轻松地破解这种简单的图片验证码了。当然,我们也可以简单地对他进行变形,比如使用中文然后按顺序点击之类的,这些都比较简单地就能实现。更复杂的验证码则推荐使用一些开源的库或者api来实现。
今天,我们将继续学习 GD 库的一些常用的应用。依然是通过一些小例子来进行学习,同样也是我们在日常开发中非常常用的一些功能。
2024年10月14日
上一篇:python高手养成记02:python开发环境安装
题序:
在很多书本里面,一般的顺序都是先学语法,然后再进阶,学习面向对象的设计,像小编,刚开始学习C++的时候非常痛苦,记得住语法,但是不明白为什么要这么做,经常遇到做程序设计的时候就卡壳,无从下手,傻乎乎的听老师说多练习就懂了。直到有一天看视频的时候听到一位老前辈在介绍面向对象思想的时候,才发现原来程序这么简单。
2024年10月14日
作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂。
内容:跟艾文学编程《零基础入门学Python》
2024年10月14日
Python 面向对象编程(一)
虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在Python中进行对象编程。
一.如何定义一个类
在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。
类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:
class className:
block
注意类名后面有个冒号,在block块里面就可以定义属性和方法了。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象。比如定义了一个people类:
2024年10月14日
前面我们介绍了各种变量,数据结构,函数,今天我们来学习自己建立对象,在python 函数也好列表也好都能看作是对象,我们今天就来学习创建对象,创建类。
面向对象的对象可以看成是数据方法的集合,比方说汽车就是一个对象,所有的汽车都有共有的特征,有车轮,有车厢,有车灯。卡车属于汽车,也有轮子,车厢车灯,但是卡车还有货斗等等。汽车是一个对象,卡车也是。也就是说对象是一一个类别一个抽象,他是一类数据、函数、方法的集合,能够代表某些数据特性的数据。
举个类的例子: