1

サムネイルをファイルとして作成するのは非常に簡単ですが、PHP画像関数を使用して画像を作成し、データベーステーブル内にデータを保存するために使用できる変数witch内にデータを保存する方法がわかりません。

私は画像機能に不慣れで、それらの機能を理解していません。それらはディレクトリ指向ですか?そのため、サムネイルメーカー用のtmpマップのようなものを作成し、file_get_contentを使用して、画像を削除する必要があります。

または、プロセス中に画像のデータを保存する方法を教えてください。何も思いつきません!

サムネイルをファイルとして保存する必要がある場合は、次のように作成します。

//found at stackoverflow
function tumbmaker($updir, $img,$MaxWe=100,$MaxHe=150){
    $arr_image_details = getimagesize($img); 
    $width = $arr_image_details[0];
    $height = $arr_image_details[1];

    $percent = 100;
    if($width > $MaxWe) $percent = floor(($MaxWe * 100) / $width);

    if(floor(($height * $percent)/100)>$MaxHe)  
    $percent = (($MaxHe * 100) / $height);

    if($width > $height) {
        $newWidth=$MaxWe;
        $newHeight=round(($height*$percent)/100);
    }else{
        $newWidth=round(($width*$percent)/100);
        $newHeight=$MaxHe;
    }

    if ($arr_image_details[2] == 1) {
        $imgt = "ImageGIF";
        $imgcreatefrom = "ImageCreateFromGIF";
    }
    if ($arr_image_details[2] == 2) {
        $imgt = "ImageJPEG";
        $imgcreatefrom = "ImageCreateFromJPEG";
    }
    if ($arr_image_details[2] == 3) {
        $imgt = "ImagePNG";
        $imgcreatefrom = "ImageCreateFromPNG";
    }


    if ($imgt) {
        $old_image = $imgcreatefrom($img);
        $new_image = imagecreatetruecolor($newWidth, $newHeight);
        imagecopyresized($new_image, $old_image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

       $imgt($new_image, $updir."_t.jpg");
        return;    
    }
}

私はこのコードでそれをしました:

function tumbmaker($img_source,$MaxWe=100,$MaxHe=150){
        $arr_image_details = getimagesize($img_source); 
        $width = $arr_image_details[0];
        $height = $arr_image_details[1];

        $percent = 100;
        if($width > $MaxWe) $percent = floor(($MaxWe * 100) / $width);

        if(floor(($height * $percent)/100)>$MaxHe)  
        $percent = (($MaxHe * 100) / $height);

        if($width > $height) {
            $newWidth=$MaxWe;
            $newHeight=round(($height*$percent)/100);
        }else{
            $newWidth=round(($width*$percent)/100);
            $newHeight=$MaxHe;
        }

        if ($arr_image_details[2] == 1) {
            $imgt = "ImageGIF";
            $imgcreatefrom = "ImageCreateFromGIF";
        }
        if ($arr_image_details[2] == 2) {
            $imgt = "ImageJPEG";
            $imgcreatefrom = "ImageCreateFromJPEG";
        }
        if ($arr_image_details[2] == 3) {
            $imgt = "ImagePNG";
            $imgcreatefrom = "ImageCreateFromPNG";
        }


        if ($imgt) {
            $old_image = $imgcreatefrom($img_source);
            $new_image = imagecreatetruecolor($newWidth, $newHeight);
            imagecopyresized($new_image, $old_image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
            $imgt($new_image, $updir."_t.jpg");
            ob_start();
            $imgt($new_image);
            $imgData = ob_get_clean();
            return $imgData;
        }
}

詳細については回答をお読みください

4

1 に答える 1

1

画像作成関数にファイル名を指定しない場合、それらは単に画像データをPHPの出力バッファーに書き込みます。

つまり、次のように画像データを傍受できるということです。

ob_start();
$imgt($new_image);
$imgData = ob_get_clean();

PHPGDマニュアルをご覧ください。

于 2013-03-10T22:14:55.977 に答える