だから、元の画像を歪ませるように画像をごちゃまぜにしたいのです。つまり、これです。画像を読み込み、画像をループして 32x32 ブロックを取得し、個々のブロックを配列に格納します。次に、ブロックをランダムな順序で新しい絵として再組み立てします。
これは、元の画像からブロックを取得して保存し、画像を再構築するために現在必要なコードです(これにはまだランダム化部分がないことに注意してください)。しかし、何らかの理由で正しく出力されません。
<?php
$name = "pic.jpg";
$src = imagecreatefromjpeg($name);
list($width, $height, $type, $attr) = getimagesize($name);
$x_size = floor($width/32);
$y_size = floor($height/32);
$mixed = array();
$new_image = imagecreatetruecolor(32,32);
$x = 0;
$y = 0;
for($y = 0; $y < $height; $y+= 32) {
for($x = 0; $x < $width; $x+=32) {
imagecopy($new_image, $src, 0, 0, $x, $y, 32, 32);
array_push($mixed, $new_image);
}
}
$final_image = imagecreatetruecolor($width, $height);
$i = 0;
$x1 = 0;
$y1 = 0;
for($i = 0; $i < sizeof($mixed); $i++) {
$x1++;
if($x1 >= $x_size) {
$x1 = 0;
$y1++;
}
imagecopymerge($final_image, $mixed[$i], $x1, $y1, 0,0,32,32,100);
}
header('Content-Type: image/jpeg');
imagejpeg($final_image);
?>
元の画像:
出力:
お役に立てれば幸いです。
ありがとう。