1

特大サイズ (高さ、幅) の jpeg 画像がたくさんあり、すべてサイズとアスペクト比が異なります。

私はこのようなデータベースからそれらを示しています:

<img src="<?php echo $img1; ?>" width="300" height="400">

私が欲しいのは、次のような画像のトリミングされたバージョンを表示するためのある種のphp関数です:

cropjpeg('$img1');

たとえば、画像が 600 W、700 H の場合、php または GD で、画像の左上から 300 W、400 H あたりのトリミングされたバージョンを表示します。

いくつかの注意事項:

  1. CSS を使用して行うことはできませんfaux cropping。このトリミングされた画像をダウンロードする場合は、トリミングされた小さいバージョンである必要があります。

  2. 新しい画像を作成して保存したくないので、「その場で」動作するためにこれが必要だと思います

  3. imagecreatefromjpeg と imagejpeg を試してみましたが、まるでそうですheader('Content-Type: image/jpeg')。この1つの画像だけでなく、htmlページにはもっとあるので、正しい答えではありません

  4. サイトには多くのトラフィックがあるため、軽く踏む必要があります

これは私がこれまでに見つけた最高のものですが、それはheader('Content-Type: image/jpeg');

<?php
    function cropjpeg($img, $x, $y, $width, $height,$grade=5)
    {
        // Create image instances
        $src = imagecreatefromjpeg($img);
        $dest = imagecreatetruecolor(400, 300);

        // Copy
        imagecopy($dest, $src, 0, 0, 20, 13, 400, 300);

        // Output and free from memory
        header('Content-Type: image/jpeg');
        imagejpeg($dest);

        imagedestroy($dest);
        imagedestroy($src);
    }
    cropjpeg('images/bikini.jpg');

?>

何か案は?

4

3 に答える 3

2

ディスクに保存したくない場合は、処理する必要があるため、実際の html ページで画像をトリミングすることはできません。

ヘッダー付きの単一の PHP ファイルにクロップ スクリプトをダンプし、HTML からパス付きのスクリプトを呼び出すことができます。

<img src="http://www.example.org/crop.php?i=bikini.jpg&x=13&y=20&w=400&h=300" alt="" />

そしてスクリプトで使用できます

<?php

     header('Content-Type: image/jpeg');
     function cropjpeg($img, $x, $y, $width, $height,$grade=5) {
         //......................
         imagecopy($dest, $src, 0, 0, $x, $y, $width, $height);
         //......................
     }

     cropjpeg('images/'.$_GET['i'], (int)$_GET['x'], (int)$_GET['y'], (int)$_GET['w'], (int)$_GET['h']);
?>

アスペクト比を考慮し、より良いクロップ スクリプトを検索する必要があります。車輪を再発明する必要はありません。

于 2012-08-25T07:33:43.377 に答える
0

mod_rewrite を使用して、関連する画像ファイル パスの要求を PHP スクリプトに送信します。PHP スクリプトはトリミングを行い、応答として画像データを返します。ページ上の通常の画像タグのように見えますが、画像は実際には別のスクリプトによって提供されています。

唯一の問題は、トリミングされたファイルを同時に保存したくないが、トラフィックが多いため「軽く踏む」ことです。両方の方法を持つことはできません。リクエストごとに画像を再トリミングしたくない場合は、将来のリクエストで再提供できるように、トリミングされたバージョンを保存する必要があります。

于 2012-08-25T07:29:30.320 に答える
0

これは、ajax を使用してこれを行うために必要なすべてを含む非常に完全なチュートリアルのページです。

jqueryとphpでトリミング

[http://www.skillcorp.com.ve][2]

[2]: http://www.skillcorp.com.veこちらも詳細情報

于 2012-08-25T08:17:28.093 に答える