php生成网页隐藏图像

原创 2004年06月25日 22:12:00

大家见过网页隐藏图像,一般可以用firework或者ps制作隐藏图像。下面介绍一下原理。当我们选择ctrl+a的时候,在图像里面发生了下面变化,所有的x和y坐标和能被2整除的象素(姑且称为a类象素)会保留,而所有的x和y坐标和不能被2整除的象素(姑且称为b类象素)会被蓝色象素覆盖,造成了一种半透明蒙板效果。如
象素(0,0)能保留
而象素(1,0)则要被windows用蓝色象素覆盖掉。
设想一下,我们对所有a类象素如(如(0,0))先下手,用其它颜色覆盖掉(比如说白色),那么剩下b类的象素(如(1,0))仍然保留了一半的信息,由于眼睛分辨率的原因,我们还是可以看得出这副图像的轮廓,只是感觉加了一层半透明的蒙板。
当我们全选的时候,windows将b类象素全部用蓝色象素覆盖掉,那么我们只能看到a类象素了,但是a类象素有效信息已经被我们用白色象素覆盖掉了,宏观效果就是我们看不到有效的图片象素了。

但是如果我们不把a类象素用白色覆盖掉,而是取而代之为另外一张图片(我们成为图片2,原来的图片称为图片1)的a类象素呢。那么我们看到的就是两张图片混合的效果,在这张图片里面,a类象素带了图片2的信息,而b类象素带了图片1的信息。
当我们全选的时候,b类象素被windows用蓝色象素覆盖,我们就只能看到a类象素了,剩下的就是图片1的信息了。


这里仍然不很完美,就是图片2隐藏的很不好,那怎么办,既然图片2的a类象素是必需要保留的,图片1的b类象素必需保留,那么我们就把图片2的透明度调高,这样就淡化了图片2,也许可以降低人们对它的注意力:

效果还是不好,仍然看得出来。怎么办,我们加入干扰因素,是图片颜色打破人眼的习惯。我们先单独对图片2实验这种干扰的效果。
图片2的a类象素必需保留,那么我们可以将图片2的b类象素变成负片效果,这样混合就会得到非常规效果,因为这种轮廓不符合人眼习惯,就会干扰人眼正常识别。这下效果就出来了。

然后我们将图片2透明度调高,于图片1混合,当全选的时候,图片1的信息的b类象素全部被屏蔽,混合图片的a类象素和图片1的a类象素位置的白色象素是半透明的,我们可以朦胧的看见图片2的信息,没有全选的时候,混合图片中b类象素中的包括了图片2的负片信息和图片1的正片信息,而由于a,b类象素都是按同样强度做alpha混合的,所以混合图片中b类象素仍然会干扰a类象素,除非全选将a类象素屏蔽掉。
<?
function MixImg()
{
 $param['bgimg']='me.jpg';
 $param['hdimg']='index.jpg';
 $param['alpha']=25;
 $param['fmode']='white';

 while(list($key,$val)=each($_GET))
 {
  $param[$key]=$val;
 }

 $size=getimagesize($param['bgimg']);
 $size1=getimagesize($param['hdimg']);
 if(($size[0])>400||($size[1]>300))
 {
  echo 'Too large images, less than 400*300 pixels.';
  exit;
 }
 if(($size1[0])>400||($size1[1]>300))
 {
  echo 'Too large images, less than 400*300 pixels.';
  exit;
 }

 $im = imagecreatefromjpeg($param['bgimg']);
 $im1 = imagecreatefromjpeg($param['hdimg']);

    define(white,ImageColorAllocate($im, 255,255,255));
    define(black,ImageColorAllocate($im, 0,0,0));
 define(fill_color,($param['fmode']=='black')?black:white);
 define(imgh,imagesy($im));
 define(imgw,imagesx($im));

 for($y=0;$y<=imgh;$y++)
  for($x=0;$x<=imgw;$x++)
  {
   if((($x+$y)%2))
   {
    imagesetpixel($im1, $x, $y, imagecolorat($im1, $x, $y));
    imagesetpixel($im, $x, $y, fill_color);
   }
   else
   {
    imagesetpixel($im1, $x, $y,white-imagecolorat($im1, $x, $y));
    imagesetpixel($im, $x, $y,imagecolorat($im, $x, $y));
   }
  }

 imagecopymerge( $im, $im1, 0, 0, 0, 0, imgw, imgh,$param['alpha']);//混合图像,做alpha混合

 Header("Content-type: image/png");
 Imagepng($im);
 ImageDestroy($im);
 ImageDestroy($im1);
}
?>

PHP中用header:图片地址 简单隐藏图片源地址

      当然这个是最简单的,用于表面上让用户看不见,再用$_SERVER加个防盗链也是不难的。要做到彻底防盗链?好像用imagecreatejpeg()、imagecreatepng(),诸如此类...
  • gently
  • gently
  • 2007年01月18日 09:57
  • 881

php 实现背景图上添加 圆形logo

说一下步骤: 总共分 3 步: 1. 压缩logo 成固定大小的方形图片 2. 将logo 转成圆形logo 3. 将logo与背景图合并 废话不多说,直接上代码: ...
  • wujiangwei567
  • wujiangwei567
  • 2016年05月16日 17:43
  • 2976

php页面去掉warning,notice等信息

error_reporting 设定错误讯息回报的等级 2047我记得应该是E_ALL。  php.ini 文件中有许多配置设置。您应当已经设置好自己的php.ini 文件并把它放在合适的...
  • zzb521zzb
  • zzb521zzb
  • 2014年02月27日 17:35
  • 1879

php实现的网页正文提取算法

Html2Article-php实现的提取网页正文部分,最近研究百度结果页的资讯采集,其中关键环节就是从采集回的页面中提取出文章。 因为难点在于如何去识别并保留网页中的文章部分,而且删除其它无用的信息...
  • qikexun
  • qikexun
  • 2016年10月11日 20:05
  • 1479

PHP在网页中动态生成PDF文件详细教程

我们将使用女子旱滑比赛的得分来演示动态构建 PDF 文件的过程。这些得分是从 Web 中获得并被转换成 XML。清单 1 显示了一个示例 XML 数据文件。 清单 1. XML 数据 ...
  • fanblog
  • fanblog
  • 2016年09月30日 17:01
  • 1551

原理与示例:php+mysql+jquery 生成静态网页(含后台编辑功能)

原理与示例:php+mysql+jquery 生成静态网页(含后台编辑功能)
  • laoyaotask
  • laoyaotask
  • 2014年12月23日 22:13
  • 1883

史上最强php生成pdf文件,html转pdf文件方法

之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类。方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有...
  • mengke1124
  • mengke1124
  • 2015年02月07日 17:30
  • 8393

图像信息隐藏

简介   本篇介绍和讲解如何在图像中隐藏一些信息。 具体实现 基本流程   一共分为两部分:第一部分是生成隐藏的加密图像,另一部分是对加密图像解密,显示出被隐藏的信息。 生成加密图像 具体...
  • u011630458
  • u011630458
  • 2015年07月17日 10:17
  • 2566

通用PHP动态生成静态HTML网页的代码

最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。   我们知道,PH...
  • u013981760
  • u013981760
  • 2015年02月05日 23:55
  • 1215

PHP隐藏控件作用

array_test.php:
  • u013372487
  • u013372487
  • 2015年06月19日 13:14
  • 711
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php生成网页隐藏图像
举报原因:
原因补充:

(最多只允许输入30个字)