3

我有一个 450x450 像素的源图像。我想使用 PHP 将它裁剪成 9 个 150x150 的片段。
我正在使用以下代码。
我得到 9 张图像,但裁剪不合适。这是屏幕截图:

在此处输入图像描述

最后一个是我正在使用的源图像。
这是我的代码。

<?php

$targ_w = $targ_h = 150;
$jpeg_quality = 25;

$src = "puzzleimages/puzzle2.jpg";

$y = 0;
$y2 = 150;
$x = 0;
$x2 = 150;

$i = 3;
$name = 0;
while( $i-- ){
    $j = 3;

    while( $j-- ){


        $img_r = imagecreatefromjpeg($src);
        $dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

        imagecopyresampled($dst_r,$img_r,0,0,$x,$y,$targ_w,$targ_h,$x2,$y2);

        //header('Content-type: image/jpeg');
        imagejpeg($dst_r,'puzzleimages/'.++$name.'.jpg', $jpeg_quality);

        $x += 150;
        $x2 += 150;

    }


    $y += 150;
    $y2 += 150;
    $x = 0;
    $x2 = 150;

}

?>

谁能建议出了什么问题?

4

2 回答 2

2

我认为您不需要不断更改源宽度/高度,它应该一直是 150。试试这个:

imagecopyresampled($dst_r,$img_r,0,0,$x,$y,$targ_w,$targ_h,$targ_w,$targ_h);
于 2014-07-22T14:53:33.653 回答
1
bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int$dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

参考 PHP 文档,唯一需要更改的参数是src_xsrc_y。由于您更改了x2and y2,因此将应用以下内容:

如果源和目标坐标以及宽度和高度不同,则会对图像片段进行适当的拉伸或收缩。

于 2014-07-22T15:05:25.723 回答