Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将图像切割/分割成若干部分[PHP]_Php_Image - Fatal编程技术网

如何将图像切割/分割成若干部分[PHP]

如何将图像切割/分割成若干部分[PHP],php,image,Php,Image,我尝试创建类似do(将图像分割成碎片)的东西 我想垂直地每20个像素对图像进行一次切片,但上面的代码只适用于第一个像素:'( 谢谢您正在更改高度,您应该更改y值 ... $a = 0; while($a<=$height){ $slice[] = $a; $a+=20; } if($a>$height && end($slice) !== $height){ $slice[] = $a+($height-$a); } for($i=0;$

我尝试创建类似do(将图像分割成碎片)的东西


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


谢谢

您正在更改高度,您应该更改y值

...
$a = 0;
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' => $slice[$i], 'width' => $width, 'height' => 20);
    if ($im2 !== FALSE) {
        imagejpeg($im2, "test/example-$i.jpg");
        imagedestroy($im2);
    }
}
...
。。。
$a=0;
while($a$height&&end($slice)!=$height){
$slice[]=$a+($height-$a);
}
对于($i=0;$i0,$y'=>$slice[$i],'width'=>$width,$height'=>20);
如果($im2!==FALSE){
imagejpeg($im2,“测试/示例-$i.jpg”);
2美元;
}
}
...

在imagecrop函数中,
y
坐标始终设置为0。因此,在循环时,图像从初始坐标
y=0
剪切到
$slice[$i]

我建议用户改为使用以下for循环:

for($i=0;$i<count($slice);$i++){
    $im2 = imagecrop($im, ['x' => 0, 'y' => $slice[$i] - $a, 'width' => $width, 'height' => $slice[$i]]);
    if ($im2 !== FALSE) {
        imagejpeg($im2, "test/example-$i.jpg");
        imagedestroy($im2);
    }
}
for($i=0;$i0,$y'=>$slice[$i]-$a,'width'=>$width,'height'=>$slice[$i]]);
如果($im2!==FALSE){
imagejpeg($im2,“测试/示例-$i.jpg”);
2美元;
}
}

您的“此站点”链接似乎有误?您的意思是:?@KIKO Software edited。
for($i=0;$i<count($slice);$i++){
    $im2 = imagecrop($im, ['x' => 0, 'y' => $slice[$i] - $a, 'width' => $width, 'height' => $slice[$i]]);
    if ($im2 !== FALSE) {
        imagejpeg($im2, "test/example-$i.jpg");
        imagedestroy($im2);
    }
}