说好一起白头你却偷偷焗油 發表於 2023-8-17 00:00:00

phpcms远程图片本地化不成功及加水印功能失效的解决教程

<p>
<span>所以使用了 curl 函数来替换,经过测试对于防盗链的图片远程抓取依然有效,另外添加了远程保存图片的加水印功能. </span><br><span>2010年10月10日19:30:18最新申明:php必须开启支持curl函数,具体开启方法参照的另一篇文章,否则无法使用本方法。 </span><br><span>让服务器支持PHP curl函数开启CURL扩展,</span><br><span>具体修改如下: include/attachment.class.php 添加了一个函数 </span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
function ycimg($file,$newfile) <br>
{ <br>
// 初始化一个 cURL 对象 <br>
$curl = curl_init(); <br>
// 设置你需要抓取的URL <br>
curl_setopt($curl, CURLOPT_URL, $file); <br>
// 设置header <br>
curl_setopt($curl, CURLOPT_HEADER, 0); <br>
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 <br>
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); <br>
// 运行cURL,请求网页 <br>
$data = curl_exec($curl); <br>
// 关闭URL请求 <br>
curl_close($curl); <br>
//写入获得的数据 <br>
$write = @fopen($newfile,"w"); <br>
fwrite($write,$data); <br>
fclose($write); <br>
return TRUE; <br>
} </p>
<p>
<br><span>这里可能有点小问题.不过测试的时候都可以成功抓取.所以直接让他返回了 TRUE .有兴趣的朋友可以继续完善下这个函数. </span><br><span>然后在这文件里找到 </span><br><span>if(@$upload_func($file, $newfile)) </span><br><span>修改为: </span><br><span>if($this-&gt;ycimg($file,$newfile)) </span><br><span>最后去掉: </span><br><span>@chmod($newfile, 0777); </span><br><span>这一段代码. </span><br><span>这样远程抓取的时候成功率就很高了.本地测试的时候成功率100%,而copy函数成功率不到70% …… </span><br><span>上面说过,网络因素影响比较大. </span><br><span>再就是远程保存的图片加水印的功能. </span><br><span>同样还是这个文件.找到以下代码: </span><br><span>$this-&gt;downloadedfiles[$aid] = $filepath; </span><br><span>在下面加入以下代码: </span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
$waterpath = UPLOAD_URL.$filepath; <br>
require_once 'image.class.php'; <br>
$image = new image(); <br>
$image-&gt;watermark($waterpath, '', '9', 'images/watermark.gif', '', '5', '#ff0000', '80','100'); </p>
<p>
<br><span>水印参数只能这里调整,系统里的设置无效……</span></p>
頁: [1]
查看完整版本: phpcms远程图片本地化不成功及加水印功能失效的解决教程