PHP的
body{}
a{display: inline-block;width:1px;height:1px;}
function createImFromFile($path){
if(!is_file($path)){
throw new Exception("File: $path not found!");
}
$info = getimagesize($path);
switch ($info[2]){
case 1:
//gif
$tim = imagecreatefromgif($path);
$w = imagesx($tim);
$h = imagesy($tim);
$im = imagecreatetruecolor( $w,$h );
imagecopy($im,$tim,0,0,0,0,$w,$h);
imagedestroy($tim);
break;
case 2:
//jpg
$im = imagecreatefromjpeg($path);
break;
case 3:
//png
$im = imagecreatefrompng($path);
break;
default:
throw new Exception("Not support file type.File:$path");
}
return $im;
}
$im = createImFromFile("d:\\aa.jpg");
$w = imagesx($im);
$h = imagesy($im);
$str = "
for($i = 0; $i < $h; $i++){
$str .= "
for($j = 0; $j <$w; $j++){
$rgb = str_pad(dechex(imagecolorat($im, $j, $i)), 6, "0", STR_PAD_LEFT);
}
$str .= "
}
$str .= "
imagedestroy($im);
echo $str;
/*$rgb = ImageColorAt($im, 100, 100);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;*/
?>
.NET の:
保護された文字列 tmp = "";
protected void Page_Load(object sender , EventArgs e) {
ビットマップ bm = new Bitmap("d:\aa.jpg");
int w = bm.Width;
int h = bm.Height;
StringBuilder sb = new StringBuilder();
カラー c;
sb.Append("
for( int i = 0 ; i < h ; i++ ) {
sb.Append("
for( int j = 0 ; j < w ; j++ ) {
c = bm.GetPixel(j,i);
sb.Append(string.Format("" , V(c.R) , V( c.G) , V(c.B)));
}
sb.Append("
}
sb.Append("
tmp = sb.ToString();
}
プライベート文字列 V( int v ) {
return string.Format("{0:X}" , v).PadLeft(2 , '0');
}
等我一步一步解开他的混淆後,発行:它只是一笑话!
另外说明一下:
PHP 里没では createimagefromgif を直接使用しています 理由:
imagecolorat returns the color index (position in the palette) for palette based image or the color value for true color images. imagecreatefromjpeg creates true color images, always. imagecreatefromgif creates always palette based images and imagecreatefrompng creates either palette or true color images as PNG supports both image types. <br/>