首页技术php输出一张本地图片(php 图片处理)

php输出一张本地图片(php 图片处理)

编程之家2026-07-021172次浏览

老铁们,大家好,相信还有很多朋友对于php输出一张本地图片和php 图片处理的相关问题不太懂,没关系,今天就由我来为大家分享分享php输出一张本地图片以及php 图片处理的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

php输出一张本地图片(php 图片处理)

php怎么实现根据图片搜索图片功能

php爱好者们很对php开发的追求是永不止步的,今天偶然想起来了发下

php怎么实现相似图片的搜索呢?

其中的原理来解释下

1、缩小尺寸。将图片缩小到8×8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。

2、简化色彩。将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

3、计算平均值。计算所有64个像素的灰度平均值。

php输出一张本地图片(php 图片处理)

4、比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。

5、计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。

使用代码

hash($f);

}

return$isString?$result[0]:$result;

php输出一张本地图片(php 图片处理)

}

public function checkIsSimilarImg($imgHash,$otherImgHash){

if(file_exists($imgHash)&& file_exists($otherImgHash)){

$imgHash=$this->run($imgHash);

$otherImgHash=$this->run($otherImgHash);

}

if(strlen($imgHash)!== strlen($otherImgHash)) return false;

$count= 0;

$len= strlen($imgHash);

for($i=0;$i<$len;$i++){

if($imgHash{$i}!==$otherImgHash{$i}){

$count++;

}

}

return$count<=(5*$rate*$rate)? true: false;

}

public function hash($file){

if(!file_exists($file)){

return false;

}

$height= 8*$this->rate;

$width= 8*$this->rate;

$img= imagecreatetruecolor($width,$height);

list($w,$h)= getimagesize($file);

$source=$this->createImg($file);

imagecopyresampled($img,$source, 0, 0, 0, 0,$width,$height,$w,$h);

$value=$this->getHashValue($img);

imagedestroy($img);

return$value;

}

public function getHashValue($img){

$width= imagesx($img);

$height= imagesy($img);

$total= 0;

$array= array();

for($y=0;$y<$height;$y++){

for($x=0;$x<$width;$x++){

$gray=( imagecolorat($img,$x,$y)>> 8)& 0xFF;

if(!is_array($array[$y])){

$array[$y]= array();

}

$array[$y][$x]=$gray;

$total+=$gray;

}

}

$average= intval($total/(64*$this->rate*$this->rate));

$result='';

for($y=0;$y<$height;$y++){

for($x=0;$x<$width;$x++){

if($array[$y][$x]>=$average){

$result.='1';

}else{

$result.='0';

}

}

}

return$result;

}

public function createImg($file){

$ext=$this->getFileExt($file);

if($ext==='jpeg')$ext='jpg';

$img= null;

switch($ext){

case'png':$img= imagecreatefrompng($file);break;

case'jpg':$img= imagecreatefromjpeg($file);break;

case'gif':$img= imagecreatefromgif($file);

}

return$img;

}

public function getFileExt($file){

$infos= explode('.',$file);

$ext= strtolower($infos[count($infos)- 1]);

return$ext;

}

}

调用方式如下:

require_once"Imghash.class.php";

$instance= ImgHash::getInstance();

$result=$instance->checkIsSimilarImg('chenyin/IMG_3214.png','chenyin/IMG_3212.JPG');

如果$result值为true,则表明2个图片相似,否则不相似。

为什么使用php GD库图片输出中文字会出现乱码

原因:

1、服务器编码原因。由于imagettftext函数字符串参数的默认编码是UTF8,如果服务器编码不一致,而又没有进行相应的字符编码格式转换,很容易出现使用gd库输出图片时中文字符变成乱码。

2、没有选择正确的TTF字体文件。使用gd库时如果要输出中文字符,需要选择正确的TTF字体文件。

解决方法:

根据之前介绍的php gd库产生中文乱码的原理,解决php gd库中文乱码的方法其实很简单。

1、建议整站使用UTF8编码,如果你已使用的是GB2312或GBK编码,请使用iconv或自定义的gb2312与utf8转换函数进行字符编码转换。gb2312与utf8转换函数请参考PHP Ajax传值中文字符乱码如何解决。

2、如果你是刚进行php环境搭建,建议将Apache配置文件中的默认字符集修改为UTF8,即AddDefaultCharset UTF8。

3、如果上述方法还不行,请检查你在编译gd库时是否添加了–enable-gd-jis-conv选项,此选项是为了让gd库支持日文编码的字库,请取消此选项并重新编译。此方法我没验证过,估计主要是针对Unix下安装配置php环境。Windows环境一般不会出现这种情况,似乎默认PHP配置文件是注释掉的。

4、使用php gd库产生中文乱码的另一个原因是没有选择正确的TTF字体,你需要选择支持中文的字体,常用的中文字体文件是simsun.ttc和simhei.ttf。

OK,只要按照上述方法,基本上使用php gd库产生中文乱码时都能够解决。只要仔细排查其实gd库的中文乱码解决起来非常方便。

php从数据库中调用图片

一:可以所图片转码成代码存入数据库里,需要显示的地方取出来显示,好像有一个软件可以把图片转换成代码的,你可以找一下(不推荐使用此方法)

二:可以把要显示的图片上传到一个专门的文件夹里面

数据库时只存此图片的名称和位置

在网页需要显示的地方插入一个图片,图片的地址从数据库里取得,可以很方便的显示变换图像

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

用html和css做网页 网页设计html软件delete命令,truncate和delete的区别