Hidden images.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok - I've finally got something that sometimes works.

http://smada.com/images/hide_image.php

I talked to a Delphi programmer, who whipped something out in about 20 
minutes.  My code is a translation of his.

function colorParts($col)
{
  $parts['r'] = ($col >> 16) & 0xFF;
  $parts['g'] = ($col >> 8) & 0xFF;
  $parts['b'] = $col & 0xFF;
  return $parts;
}

function NewRange($oldval)
{
  return floor($oldval/255*80+87);
}

function ShiftVal($ov1, $ov2)
{
  $nv = floor($ov1 + 1.8 * (newrange(127) - $ov2));
  if ($nv < 0)
    return 0;
  else if ($nv > 255)
    return 255;
  else
    return $nv;
}

function nrw ($oldcol)
{
  $newr = NewRange(($oldcol >> 16) & 0xFF);
  $newg = NewRange(($oldcol >> 8) & 0xFF);
  $newb = NewRange($oldcol & 0xFF);
  return ($newr << 16) + ($newg << 8) + $newb;
}

function svw($oc1, $oc2)
{
  $p1 = colorParts($oc1);
  $p2 = colorParts($oc2);
  $nvr = ShiftVal($p1['r'],$p2['r']);
  $nvg = ShiftVal($p1['g'],$p2['g']);
  $nvb = ShiftVal($p1['b'],$p2['b']);
  return ($nvr << 16) + ($nvg << 8) + $nvb;
}

function &openImage($file, $forcetruecolor = false)
{
 $data = getimagesize($file);
 $res = null;
 switch($data[2])
 {
  case 1:
   $res = imagecreatefromgif($file);
    break;
  case 2:
   $res = imagecreatefromjpeg($file);
    break;
  case 3:
   $res = imagecreatefrompng($file);
    break;
 }
 if ($forcetruecolor && !imageistruecolor($res))
 {
  $size = getimagesize($file);
  $r2 = imagecreatetruecolor($size[0], $size[1]);
  imagecopy($r2, $res, 0, 0, 0, 0, $size[0], $size[1]);
  imagedestroy($res);
  $res =& $r2;
 }
 return $res;
}


include('two_image_upload.inc.php');
$main = openImage($main_file, true);
$hid = openImage($hid_file, true);
$size = getimagesize($main_file);
$size2 = getimagesize($hid_file);
$img = imagecreatetruecolor($size[0], $size[1]);

for ($y = 0; $y < $size[1]; $y++)
{
 $y2 = floor(($y / $size[1]) * $size2[1]);
 for ($x = 0; $x < $size[0]; $x++)
 {
  $x2 = floor(($x / $size[0]) * $size2[0]);
    if (($x + $y) % 2 == 0) //use main image
      imagesetpixel($img, $x, $y, imagecolorat($main, $x, $y));
    else //use hidden image
    {
     $color = imagecolorat($hid, $x2, $y2);
     imagesetpixel($img, $x,$y, nrw($color));
      if ($y % 2 == 1)
        $x3 = $x-1;
      else
        $x3 = $x+1;
      if ($x3 >= 0 and $x3 < $size[0])
      {
       $color = svw(imagecolorat($img, $x3, $y), imagecolorat($img, $x, 
$y));
       imagesetpixel($img, $x3, $y, $color);
      }
    }
 }
}

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux