发新话题
打印

隐藏图片地址的简单方法

隐藏图片地址的简单方法

原理就是将图片地址保存进数据库,然后用php调用数据库,利用图片地址生成图片在浏览器显示。显示的图片地址是php的地址。这样就隐藏了其真实地址!
[Copy to clipboard]
PHP CODE:
<?php
#img.php
require_once('global.php');
$id=$_GET[id];
$sql=$db->get_one("select imgurl from pics where id='{$id}'");//这个是从数据库里调图片地址的,前面的程序我就不写了
$image_path=$sql[0];

define(MAX_WIDTH150);
define(MAX_HEIGHT150);//定义图片大小,有缩略图的功能

$img null;
$ext strtolower(end(explode('.'$image_path)));
if (
$ext == 'jpg' || $ext == 'jpeg') {
    
$img = @imagecreatefromjpeg($image_path);
} else if (
$ext == 'png') {
    
$img = @imagecreatefrompng($image_path);

} else if (
$ext == 'gif') {
    
$img = @imagecreatefrompng($image_path);
}

if (
$img) {
    
$width imagesx($img);
    
$height imagesy($img);
    
$scale min(MAX_WIDTH/$widthMAX_HEIGHT/$height);

    if (
$scale 1) {
        
$new_width floor($scale*$width);
        
$new_height floor($scale*$height);
        
$tmp_img imagecreatetruecolor($new_width$new_height);
 
        
imagecopyresized($tmp_img$img0000,
                         
$new_width$new_height$width$height);
        
imagedestroy($img);
        
$img $tmp_img;
    }
}

if (!
$img) {
    
$img imagecreate(MAX_WIDTHMAX_HEIGHT);
    
imagecolorallocate($img,0,0,0);
    
$c imagecolorallocate($img,70,70,70);
    
imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
    
imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}

header("Content-type: image/jpeg");
imagejpeg($img);//显示
?>
运用方法:test.html
[Copy to clipboard]
PHP CODE:
<img src="img.php?id=123">

MY NAME IS SHUAI ! 其实我是个菜鸟。欢迎访问我的网站:PHPDO

TOP

还是没看懂,我加水印也能防拷阿。

TOP

我只是写了个简单的程序罢了,希望对有些人有用
大家研究下,相信还是很有用的
MY NAME IS SHUAI ! 其实我是个菜鸟。欢迎访问我的网站:PHPDO

TOP

恩  小心~要学习
是学习程序哦
交流QQ群2:16142493
智能手机软件下载
PHP新手不可错过一帖
PHP新手如何获得积分
论坛需要你,我们大家需要你!

TOP

[Copy to clipboard]
PHP CODE:

<?php
#img.php
require_once('global.php');
$id=$_GET[id];
$sql=$db->get_one("select imgurl from pics where id='{$id}'");//这个是从数据库里调图片地址的,前面的程序我就不写了
$image_path=$sql[0];
define(MAX_WIDTH150);
define(MAX_HEIGHT150);//定义图片大小,有缩略图的功能
$img null;
$ext strtolower(end(explode('.'$image_path))); [b][color=darkolivegreen]//这里是取到图片路径 .以后的字符并让它小写。也就是取道后缀名
[/color][/b]if ($ext == 'jpg' || $ext == 'jpeg') {
    
$img = @imagecreatefromjpeg($image_path); [b][color=olive]//从给定的文件名取得的图像。 也就是从$image_path这里创建图像[/color][/b]。
} else if ($ext == 'png') {
    
$img = @imagecreatefrompng($image_path);  [color=darkorange]//同上。。[/color]
} else if ($ext == 'gif') {
    
$img = @imagecreatefrompng($image_path);  [color=olive]//同上。。。。[/color]
}
if (
$img) {
    
$width imagesx($img);                    [b][color=olive]//取得图像宽度[/color][/b]
    
$height imagesy($img);                   [b][color=olive]//取得图像的高[/color][/b]
    
$scale min(MAX_WIDTH/$widthMAX_HEIGHT/$height);  [b][color=olive]//min 找出最小值[/color][/b].
    
if ($scale 1) {                          [b][color=green]//这里自己想想。就是获取图片 和 150,150 去比较。。从而在设置新的 width height
[/color][/b]        $new_width floor($scale*$width);    [color=green]// 设置新的宽度
[/color]        $new_height floor($scale*$height);   [color=green]// 设置新的高度
[/color]        $tmp_img imagecreatetruecolor($new_width$new_height); [b][color=olive]//新建一个真彩色图像[/color][/b]

        
imagecopyresized($tmp_img$img0000,
                         
$new_width$new_height$width$height);//[color=green]将一幅图像中的一块正方形区域拷贝到另一个图像中。         [/color]
[color=green]                                                           dst_image 和 src_image 分别是目标图像和源图像的标识符。如          [/color]
[
color=green]                                                         果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。           [/color]
[
color=green]                                                        坐标指的是左上角。本函数可用来在同一幅图内部拷贝
[/color]        imagedestroy($img); [b][color=green]//销毁一图像[/color][/b]
        
$img $tmp_img;
    }
}
if (!
$img) {
    
$img imagecreate(MAX_WIDTHMAX_HEIGHT); //[b][color=olive]返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的空白图像。 
[/color][/b]    imagecolorallocate($img,0,0,0); //[b][color=olive]为一幅图像分配颜色[/color][/b]
    
$c imagecolorallocate($img,70,70,70);  [color=blue]//[b]这里的$c 和下面的$c2是什么关系。。。楼主。。??[/b]
[/color]    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2); [color=green]//画一条线段
[/color]    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}
header("Content-type: image/jpeg");
imagejpeg($img);//显示
?>

做了小小的分析。。不知道对不对。。希望楼主给指出。。(帮助像我一样的新手看。。。)
世界极静  只有灵魂独舞--------世界上没有任何事可以替代坚持。

我们都需要论坛 论坛也同时需要我们的支持

TOP

学习了,希望大家说下php的安全问题。这方面我做的不好。

TOP

回复 5# 的帖子

新手???
MY NAME IS SHUAI ! 其实我是个菜鸟。欢迎访问我的网站:PHPDO

TOP

代码出问题了?怎么上面添加了php?name=%E6%95%B0%E6%8D%AE%E5%BA%93" onclick="tagshow(event)" class="t_tag">
MY NAME IS SHUAI ! 其实我是个菜鸟。欢迎访问我的网站:PHPDO

TOP

研究研究
等我挣了100万我就找个人娶了!哈哈!

TOP

引用:
原帖由 vista 于 2008-5-13 11:49 发表
新手???
就是学了半年,我写的时候就用MD5加密。有些还是不安全。

TOP

发新话题