-2

ユーザーがサーバーに画像をアップロードできるようにする単純な PHP スクリプトがあります。これらの画像を HTMl ページにサムネイルとして表示し、ユーザーにこれらのサムネイルをクリックさせると、元の画像が新しいページに表示されます。

これにストレートな HTML を使用できますか? または、javascript または PHP バリアントの組み合わせが必要ですか?

これについてstackoverflowで多くの質問があることを知っており、それらを試しましたが、私が求めているものは何もありません.

ユーザーが画像をアップロードするときにサムネイルを個別に作成するよりも、「その場で」サムネイルを作成することをお勧めします。

基本的に、これを行うにはどの言語を使用すればよいですか? また、可能であればソースコードを入手できますか?

ありがとう

4

3 に答える 3

0

これは、apponをビルドできるPHPスクリプトで、jpg画像でのみ機能します。

ディレクトリをスキャンし、画像を適切なサイズに正規化し、その場でサムを作成します。次に更新するときに、サムディレクトリにすでに存在する画像を再処理する必要はありません。それが役に立てば幸い...

スクリプトの配置

Root>
    thisscript.php
    /images/
           someimage.jpg
           someimage2.jpg

thisscript.php

<?php
// config section
$path = "./images/";
$thpath = $path."thumbs/";
// end configration

// Open the directory
$do = dir($path);
// now check if the thumb dir is available if not, create it!!
if (!is_dir($thpath)){
    mkdir($thpath);
}

$output = '<div>';
while (($file = $do->read()) !== false){
    if (is_dir($path.$file)){
        continue;
    }else{
        $info = pathinfo($path.$file);
        $fileext = $info['extension'];
        if (strtolower($fileext) == 'jpg'){
            if (!is_file($thpath.$file)){           
                //Normalize Super lrg Image to 750x550          
                thumb_it($path, $file, $path,750,550,99);
                //Make Thumb 200x125
                thumb_it($path, $file, $thpath,200,125,99);

                $output .='<p><a href="'.$path.$file.'"><img src="'.$thpath.$file.'" title="" alt="" /></a></p>';
            }else{

                $output .='<p><a href="'.$path.$file.'"><img src="'.$thpath.$file.'" title="" alt="" /></a></p>';
            }
        }
    }
}
$output .='</div>';

echo $output;

//Functions
function thumb_it($dirn, $file, $thumbdir,$rwidth,$rheight,$quality){
    set_time_limit(0);

    $filename = $dirn.$file;
    $thfilename = $thumbdir.preg_replace('/[^a-zA-Z0-9.-]/s', '_', $file);
    // get the filename and the thumbernail directory
    if (is_file($filename)){
        // create the thumbernail from the original picture
        $im = @ImageCreateFromJPEG($filename);
        if($im==false){return false;}
        $width = ImageSx($im); // Original picture width is stored
        $height = ImageSy($im); // Original picture height is stored

        if (($width < $rwidth) && ($height < $rheight)){
            $n_height = $height;
            $n_width = $width;
        }else{
            // saveing the aspect ratio
            $aspect_x = $width / $rwidth;
            $aspect_y = $height / $rheight;

            if ($aspect_x > $aspect_y){
                $n_width = $rwidth;
                $n_height = $height / $aspect_x;

            }else{
                $n_height = $rheight;
                $n_width = $width / $aspect_y;
            }
        }

        $newimage = imagecreatetruecolor($n_width, $n_height);
        // resizing the picture
        imageCopyResized($newimage, $im, 0, 0, 0, 0, $n_width, $n_height, $width, $height);
        // writing to file the thumbnail
        if(file_exists($thfilename)){chmod($thfilename, 0777);}
        Imagejpeg($newimage, $thfilename, $quality);
        imagedestroy($newimage);
        imagedestroy($im);
    }
}
?>
于 2012-05-07T02:46:25.727 に答える
0

要求されるたびにサムネイルを作成するのは非常に悪い考えです。最初にサムネイルを作成するときに保持することで、処理能力が大幅に節約されます。ファイルのアップロードを処理する php スクリプトにサムネイルの作成を配置して、画像とそのサムネイルを同時にディスクに保存することをお勧めします。サムネイルをメモリに保持するか、最初に作成が要求されるまで待機することもできますが、どちらの方法でも、要求されるたびに再生成することはできません。

width および/または height プロパティを設定するだけで、html を使用して画像のサイズを変更できます。

<img src='foo.jpg' alt='foo' width='500' height='300'/>

ただし、ユーザーが後でフルサイズの画像を表示するかどうか確信が持てない場合は、これはお勧めできません。その理由は、サムネイルのファイルサイズが完全な画像よりも小さいためです。クライアントがサムネイルのみを表示したい場合、完全な画像を送信して帯域幅 (= お客様のお金とクライアントの時間) を無駄にしたくありません。

インターフェースに関しては、それを達成するためにjavascriptは必要ありません.htmlだけです. ただし、HTML ページがリンクするサムネイルを作成するには、サーバー側のスクリプトが必要です。

于 2012-05-07T02:25:44.083 に答える
0

そこにはたくさんのphpサムネイルスクリプトがあります。

リライターを使用して元のパスを引き続き表示しますが、サーバーには PHP サムネイル バージョンを使用します。または、URL を次のように変更する必要があります。

<img src="thumb.php?file=path/to/picture.jpg&size=128" />

マイティスタッフ

phpThumb

そんな二人ばかりです。キャッシュされたフォルダーを利用するように最適に構成されています。私は最初のスクリプトの修正版を仕事で使用しています。

于 2012-05-07T02:41:56.923 に答える