php图片本地化
‘壹’ php网络图片本地化 原图片转换成本地化后的图片
用网络的UEditor其中有个远程图片抓取交互,可以实现你的要求。
1、远程抓取原理
图片远程抓取是指在插入本地域名之外的图片链接地址时,由服务器将这些外部图片抓取到本地服务器保存的一个功能。实现原理为在编辑器中向服务器发送包含所有外域图片地址的ajax请求,然后由服务器在后端抓取保存后返回图片地址给编辑器,再由编辑器完成外域地址和本地地址的替换工作。
//是否开启远程图片抓取
catchRemoteImageEnable:true,
//处理远程图片抓取的地址
catcherUrl:URL+"server/submit/php/getRemoteImage.php",
//提交到后台远程图片uri合集的表单名
catchFieldName:"upFile",
//图片修正地址,同imagePath
catcherPath:fixedImagePath,
//本地顶级域名,当开启远程图片抓取时,除此之外的所有其它域名下的
//图片都将被抓取到本地
localDomain:[".com","10.81.2.114"],
2、注意事项
远程抓取功能是否开启可在edicot_config.js中通过配置catchRemoteImageEnable参数实现。与这个功能相关的配置还包括了远程抓取的处理程序地址,表单域名称,本地域和“前后端修正地址”。远程抓取处理程序实现了依据前端提交的地址列表(使用ue_separate_ue标示符进行分隔的字符串)进行图片抓取,然后返回地址列表给客户端的功能。
前后台交互数据格式样例:(URL1,URL2,URL3,URL4)
URL1ue_separate_ueURL2ue_separate_ueURL3ue_separate_ueURL4
‘贰’ php如何把图片缓存到本地
正确设置Http Response Header中的Expires头将有助于提高网页访问速度
我们的网站中往往包含大量的页面组件,比如图片、样式表文件、JS脚本文件和Flash动画。这些组件的变化频率非常低,尤其是那些构成网站基本框架的组件,
几乎不会发生变化。我们可以将这些变化率很低的组件看作静态内容,利用IIS的内容过期机制和浏览器的本地缓存机制将它们在访问者的电脑硬盘中保存一段时间。
当访问者访问你的网站时,如果这些存在本地的静态内容没有过期,浏览器会从本地硬盘中装载,而不去向服务器发出请求。
如果你使用Fiddler这样的工具跟踪网页访问,你会清楚地看到虽然只是访问一个页面,但是发出的Http请求和应答却不止一个。网页中的每张图片,每个
JS脚本文件,每个CSS文件,都会引发一次请求和应答。因此如果想让网页的访问速度快起来,减少Http的请求数量,降低从服务器下载内容的次数是有效途径。
而使用了内容过期机制后可以就实现这样的目的,这就是使用内容过期机制的意义。
大多数的Web开发者都玩过IIS 6或IIS 7,但是又有多少人仔细观察过HTTP Headers或HTTP Response Headers
‘叁’ PHP将图片存入数据库
插入图片和一般的数据没什么不同的,一般数据会了,传图片时候就用个move_uploaded_file改变下参数,主要是做这个的时候不要有负担
以下供参考
<?
function upload_file($files,$folder)//上传图片
{
$file_tyle = $files['type'];
$file_type_arr = array('image/gif','image/x-png','image/jpg','image/pjpeg');
if(!in_array($file_tyle,$file_type_arr) )
{
exit('file type only can be: png,jpeg,jpg,gif');
}
$knamearray = explode(".",$files["name"]);
$kname = $knamearray[count($knamearray)-1];
$rand_str = date("ymdhis");
$file_name = $rand_str.".".$kname;
$savepath = "$folder/";
/*$savepath = "$folder/date_".date('YmdHis')."/";
if( !is_dir($savepath) ) mkdir($savepath);*/
$upfile = $savepath.$file_name;
if( !move_uploaded_file($files['tmp_name'],$upfile) )
{
exit('upload error, please check your file type: png,jpeg,jpg,gif');
}
return $file_name;//不要回传值此行可注释掉
}
?>
‘肆’ php如何采集微信文章的同时获取其中图片的地址并下载本地化
给个简单的例子,仅仅是获取了远程图片哦
<?php
$url='';这是你的微信网址
$con=file_get_contents("$url");
$pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg|.png]))['|"].*?[/]?>/";
preg_match_all($pattern,$con,$match);
for($i=0;$<count($match[1]);$i++){
$pic=file_get_content($match[1][$i]);
$name_arr=explode('/',$pic);
$n=count($name_arr);
file_put_content($name_arr[$n],$pic);
}
没做测试,你测试一下吧
‘伍’ 请问php中如何调用本地图片
你输出图片的那段太繁杂了吧?
再说你干嘛要限定为执行3次而已呢?
<?php
for ($i=0;$i<=count($pictures);$i++){
echo "<td align=\"center\"><img src=\"$_server['document_root']."image(你图片的上一个文件夹名)/$pictures[$i]\"/></td>";}
}
?>
‘陆’ php保存远程图片到本地
$img = file_get_contents('http://www.91cici.com/images/logo.gif');
file_put_contents('test.gif',$img);
‘柒’ php里图片地址我用本地地址无法显示, 用web地址却可以, 为什么
你是在本地自己搭的服务器吧,php肯定不能访问本地文件了,你在本地搭的服务器,他只能访问服务器允许范围内的文件(也就是服务器根目录下的文件),不能随便一个位置都访问,这是一个访问权限的问题,如果php可以随便访问你电脑上的文件,那你的电脑安全都成问题了