我试图找出问题现在整天在哪里,我写了一些PHP代码来嵌入给定图像中的文本。我使用其ASCII值作为RGB值,在每个像素中放置每3个字母。我的问题是,当我启动脚本时,它会一直保持加载状态。我想我的代码有些问题,但我无法弄清楚,调试器也没有帮助。 这是我的代码:
<?php
$img = imagecreatefromjpeg ("https://dataencrypt.xyz/testimage.jpg");
$data = "abcdefghi"; //example
if($q=strlen($data)%3!=0){
$q==1?$data.="--":$data.="-";
}
if($img!=false){
for($i = 0;$i<(strlen($data)-3);$i+3){
$part = substr ($data , $i,3 );
$color = getEncryptedColor($img,$part);
imagesetpixel($img, $i,$i, $color);
}
}
$decrypted = decryptDataFromImage($img,0,0); // get the first 3 letters.
echo "".$decrypted;
imagedestroy($img);
function getEncryptedColor($img,$string){
return imagecolorallocate($img, ord($string[0]), ord($string[1]), ord($string[2]));
}
function printImageValues($image,$num){
for($x = 0;$x<$num;$x++){
echo "\n".imagecolorat($image, $x, $x);
}
echo "--END--";
}
function decryptDataFromImage($img,$x,$y){
$currpixel = imagecolorat($img, $x, $y);
$colors = imagecolorsforindex($img, $currpixel);
$str = "".chr($colors["red"]).chr($colors["green"]).chr($colors["blue"]);
return $str;
}
?>
答案 0 :(得分:0)
您的for
循环会永远运行,因为您编写了$i+3
,而不是将该值分配给$i
,这将是$i = $i + 3
所以改变这一部分:
for($i = 0;$i<(strlen($data)-3);$i+3)
到
for($i = 0;$i<(strlen($data)-3);$i+=3)