0

次のコードはエラーなしで動作していますが、私の問題は、サムネイルを作成するときに、サムネイルが理解できない場合があることです (幅が高さよりも非常に大きいなどの条件があります)。完全には機能しません。毎回分かりやすいサムネイルを作成するコードが欲しい(クロップされたサムネイルが生成できる)

function make_thumb($src, $dest, $desired_width)
{
    $source_image = imagecreatefromjpeg($src);
    $width = imagesx($source_image);
    $height = imagesy($source_image);

    //even if height is calculated automatically using
    $desired_height = floor($height * ($desired_width / $width));

    $virtual_image = imagecreatetruecolor($desired_width, $desired_height);
    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
    imagejpeg($virtual_image, $dest);
}
4

3 に答える 3

1

Class SimpleImage次のようにを使用できます。

// Usage:
// Load the original image
$image = new SimpleImage('lemon.jpg');

// Resize the image to 600px width and the proportional height
$image->resizeToWidth(600);
$image->save('lemon_resized.jpg');

classこれはhttps://gist.github.com/miguelxt/908143で見つけることができますgithub

于 2013-03-02T16:05:24.427 に答える
1

横向きまたは縦向きの画像の親指を作成するスクリプトを作成しました。これはあなたを助けるかもしれません

<?php
    $thumbWidth = 200; // can change it to whatever required
    $thumbHeight = 200; // can change it to whatever required

    $img = imagecreatefromstring(file_get_contents('SAM_1883.JPG'));
    $imgWidth = imagesx($img);
    $imgHeight = imagesy($img);

    $imgStart_x = 0;
    $imgStart_y = 0;
    $imgEnd_x = $imgWidth;
    $imgEnd_y = $imgHeight;

    if($imgWidth > $imgHeight){
        $diff = $imgWidth - $imgHeight;
        $imgStart_x = $diff / 2;
        $imgEnd_x = $imgWidth - $diff;
    }else{
        $diff = $imgHeight - $imgWidth;
        $imgEnd_y = $imgHeight - $diff;
    }

    $dest = imagecreatetruecolor($thumbHeight,$thumbHeight);
    imagecopyresized($dest, $img, 0, 0, $imgStart_x, $imgStart_y, $thumbWidth, $thumbHeight, $imgEnd_x, $imgEnd_y);
    imagePNG($dest,'abc'.rand(0,9999).'.png');
?>

ただし、必要に応じて、サムのソース、thumbWidth、thumbHeight、および宛先を変更できます。

于 2013-03-02T16:46:58.823 に答える
0

https://github.com/lencioni/SLIRはその場で画像のサイズを変更できます。画像をサーバーにキャッシュするだけでなく、ブラウザやプロキシ サーバーでもキャッシュできるようにします。HTML の読み込み時ではなく、画像の読み込み時にサイズ変更が行われるため、HTML の読み込みが速くなります。

于 2015-06-02T16:08:49.040 に答える