如何将图像剪切/分割成碎片 [PHP]

我试着创建像这个网站那样的东西(将图像切成碎片)

<?php

$im = imagecreatefromjpeg('a.jpg');

$height = imagesy($im);

$width = imagesx($im);


$a = 20;

while($a<=$height){

    $slice[] = $a;

    $a+=20;

}

if($a>$height && end($slice) !== $height){

    $slice[] = $a+($height-$a);

}


for($i=0;$i<count($slice);$i++){

    $im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $width, 'height' => $slice[$i]]);

    if ($im2 !== FALSE) {

        imagejpeg($im2, "test/example-$i.jpg");

        imagedestroy($im2);

    }

}

imagedestroy($im);

echo PHP_EOL .'Fck Yeah'. PHP_EOL;

?>

我想每 20 个像素垂直切片图像,但上面的代码只适用于第一个:'( 

http://img.mukewang.com/643a72f600013a3808680237.jpg

烙印99
浏览 128回答 3
3回答

慕姐8265434

你可以更换$im2&nbsp;=&nbsp;imagecrop($im,&nbsp;['x'&nbsp;=>&nbsp;0,&nbsp;'y'&nbsp;=>&nbsp;0,&nbsp;'width'&nbsp;=>&nbsp;$width,&nbsp;'height'&nbsp;=>&nbsp;$slice[$i]]);和$im2&nbsp;=&nbsp;imagecrop($im,&nbsp;['x'&nbsp;=>&nbsp;0,&nbsp;'y'&nbsp;=>&nbsp;$slice[$i]&nbsp;*&nbsp;$i,&nbsp;'width'&nbsp;=>&nbsp;$width,&nbsp;'height'&nbsp;=>&nbsp;$slice[$i]])神奇之处在于:每次循环运行时都必须更新 Y 轴。在您的代码中,Y 始终为 0。这就是为什么每次裁剪一部分时,它都从主图像的顶部开始。通过替换 Y 静态值,Y 每次都动态变化,每个图像部分的 Y 轴从上一个裁剪部分被切断的地方开始。

慕哥6287543

在 imagecrop 函数中,y坐标始终设置为 0。因此,在循环时,图像从初始坐标裁剪y=0到$slice[$i]我会建议用户遵循 for 循环:for($i=0;$i<count($slice);$i++){&nbsp; &nbsp; $im2 = imagecrop($im, ['x' => 0, 'y' => $slice[$i] - $a, 'width' => $width, 'height' => $slice[$i]]);&nbsp; &nbsp; if ($im2 !== FALSE) {&nbsp; &nbsp; &nbsp; &nbsp; imagejpeg($im2, "test/example-$i.jpg");&nbsp; &nbsp; &nbsp; &nbsp; imagedestroy($im2);&nbsp; &nbsp; }}

catspeake

你正在改变高度,你应该改变 y 值...$a = 0;while($a<=$height){&nbsp; &nbsp; $slice[] = $a;&nbsp; &nbsp; $a+=20;}if($a>$height && end($slice) !== $height){&nbsp; &nbsp; $slice[] = $a+($height-$a);}for($i=0;$i<count($slice);$i++){&nbsp; &nbsp; $im2 = imagecrop($im, ['x' => 0, 'y' => $slice[$i], 'width' => $width, 'height' => 20);&nbsp; &nbsp; if ($im2 !== FALSE) {&nbsp; &nbsp; &nbsp; &nbsp; imagejpeg($im2, "test/example-$i.jpg");&nbsp; &nbsp; &nbsp; &nbsp; imagedestroy($im2);&nbsp; &nbsp; }}...
打开App,查看更多内容
随时随地看视频慕课网APP