首页技术php下载图片的三种方式,php三种注释方式

php下载图片的三种方式,php三种注释方式

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

各位老铁们,大家好,今天由我来为大家分享php下载图片的三种方式,以及php三种注释方式的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

php下载图片的三种方式,php三种注释方式

php如何实现图片下载

我想告诉你,除了显示网址,然后“另存为”或者用迅雷之类的下载外,php真的还无法下载到本地,好像是因为权限什么的。

我琢磨了好久都不可能下载到本地,除非你的服务器是建立在本地的。

我自己写了一个函数,用来拷贝图片的,用copy()不行。

注意,目的为网址,你可以看看,其他文件格式同理。

//----------------------拷贝图片(包括网络图片)到指定网址------------------

//-------适用于图片类型包括:jpeg、gif、png-----------

php下载图片的三种方式,php三种注释方式

function down_image($url1,$url2){//---$url1为源网址,$url2为目标网址---

$url1_info=pathinfo($url1);

$url2_info=pathinfo($url2);

$msg="拷贝成功!";

if($url1_info[extension]==$url2_info[extension]){

switch($url1_info[extension]){

php下载图片的三种方式,php三种注释方式

case"jpg":

$img=imagecreatefromjpeg($url1);

imagejpeg($img,$url2);

break;

case"gif":

$img=imagecreatefromgif($url1);

imagegif($img,$url2);

break;

case"png":

$img=imagecreatefrompng($url1);

imagepng($img,$url2);

break;

}

}else{

$msg="文件类型不正确,拷贝失败";

}

return$msg;

}

PHP 怎么下载没有后缀的图片

保存比较简单,使用 file_get_contents和 file_put_contents,比较麻烦(应该是没想到)的是如何获取图片类型,这个可以通过响应头来判断,响应头有一个属性 Content-Type,它就是 mime,做好 mime和文件扩展名的映射,就可以知道文件的扩展名了。下面这个函数可以做个参考:

/*

*保存图片

*@param$url要保存的链接

*@return保存的字节数,失败则返回false

*/

functionsaveFile($url)

{

//mime和扩展名的映射

$mimes=array(

'image/bmp'=>'bmp',

'image/gif'=>'gif',

'image/jpeg'=>'jpg',

'image/png'=>'png',

);

//获取响应头

if(($headers=get_headers($url,1))!==false)

{

//获取响应的类型

$type=$headers['Content-Type'];

//如果符合我们要的类型

if(isset($mimes[$type]))

{

$fileName=uniqid();

$ext=$mimes[$type];

$file="temp/$fileName.$ext";

//获取数据并保存

$contents=file_get_contents($url);

returnfile_put_contents($file,$contents);

}

}

returnfalse;

}

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

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

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

其中的原理来解释下

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

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

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

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

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

使用代码

hash($f);

}

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

}

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下载图片的三种方式和php三种注释方式的答案你都知道了吗?欢迎再次光临本站哦!

简单c语言程序例子,c语言命令大全表解释html中type的属性值 html5