清使用php实现,让一张图片以3*3的形式分为9块,然后将这9块小图片等顺序打乱
时间: 2024-02-20 16:57:41 浏览: 60
php图片切割
好的,以下是使用 PHP 实现将一张图片分为 3*3 的小块并随机打乱顺序的代码:
```php
// 读取原始图片
$img = imagecreatefromjpeg('original.jpg');
// 获取图片宽高
$width = imagesx($img);
$height = imagesy($img);
// 计算小块宽高
$blockWidth = $width / 3;
$blockHeight = $height / 3;
// 创建一个新图片,作为打乱顺序后的结果
$newImg = imagecreatetruecolor($width, $height);
// 将原始图片分为 3*3 的小块,并打乱顺序
$blocks = array();
for ($i = 0; $i < 3; $i++) {
for ($j = 0; $j < 3; $j++) {
// 创建新的小块图片
$block = imagecreatetruecolor($blockWidth, $blockHeight);
// 复制原始图片中的对应区域到小块图片中
imagecopy($block, $img, 0, 0, $j * $blockWidth, $i * $blockHeight, $blockWidth, $blockHeight);
// 保存小块图片
$blocks[] = $block;
}
}
shuffle($blocks);
// 将打乱顺序后的小块图片拼接成新图片
foreach ($blocks as $index => $block) {
$i = floor($index / 3);
$j = $index % 3;
imagecopy($newImg, $block, $j * $blockWidth, $i * $blockHeight, 0, 0, $blockWidth, $blockHeight);
}
// 输出结果图片
header('Content-Type: image/jpeg');
imagejpeg($newImg);
```
以上代码中,我们首先读取原始图片,然后计算出小块的宽高,接着将原始图片分为 3*3 的小块,并随机打乱顺序,最后将打乱顺序后的小块图片拼接成新图片并输出。
阅读全文