0

画像のトリミングに問題があり、おそらく誰かが助けてくれると思いました。基本的に、私は jCrop を使用して指定された x、y、幅、高さに画像をトリミングし、バックエンドで次を使用して画像を処理しています。

<?php
    $image = imagecreatefromjpeg(DOC_ROOT . '/' . $db_image->source);   
    list($image_width, $image_height) = getimagesize(DOC_ROOT . '/' . $db_image->source);
    $cf = $data->cropping_factor;
    $new_image = imagecreatetruecolor($cf * $data->crop_data['w'], $cf * $data->crop_data['h']);
    imagecopyresampled(
        $new_image, 
        $image, 
        0, //Destination x coordinate
        0, //Destination x coordinate
        intval($cf * $data->crop_data['x']), //Source X coordinate
        intval($cf * $data->crop_data['y']), //Source Y coordinate
        intval($cf * $data->crop_data['w']), //Destination W
        intval($cf * $data->crop_data['h']), //Destination H
        $image_width, //Original W
        $image_height //Original H
    );
    imagejpeg($new_image, DOC_ROOT . '/' . $db_image->source, 100);
?>

基本的に、このコードは次のようになります。

Array
(
    [0] => Resource id #33 //New Image
    [1] => Resource id #31 //Source Image
    [2] => 0 //Destination X
    [3] => 0 //Destination Y
    [4] => 114 //Source X
    [5] => 407 //Source Y
    [6] => 786 //New Width
    [7] => 293 //New Height
    [8] => 900 //Original Width
    [9] => 700 //Original Height
)

元の画像はhttp://cl.ly/image/3Y0l1a2h3U2Sにあります。サイズ変更された画像はhttp://cl.ly/image/0Q3J2c2q0N1jにあります。

助けてくれてありがとう。

4

1 に答える 1

0

さらに調べてみると、画像が歪んでいるように見えました (バーがさまざまな角度で傾いていました)。その情報で、私はスケールが外れているに違いないと思いました。したがって、コードを次のように変更しました。

<?php
    imagecopyresampled(
        $new_image, 
       $image, 
       0, //Destination x coordinate
       0, //Destination x coordinate
       intval($cf * $data->crop_data['x']), //Source X coordinate
       intval($cf * $data->crop_data['y']), //Source Y coordinate
       $image_width, //Original W
       $image_height //Original H
       $image_width, //Original W
       $image_height //Original H
    );
?>

これにより、新しい宛先イメージの座標をスケーリングしないことで問題が修正されました。

于 2012-10-15T16:01:38.730 に答える