2016-03-28 19 views
-1

だから私は数時間こだわっています。私はこのためのGoogleのソリューションに疲れているが、ソリューションを見つけることができませんでした。だから、どんな助けでも大歓迎です。フォルダに保存せずに画像のサイズを変更する方法

私の問題:私は複数の画像をアップロードするためのフォームを使用しています

。データは複数のサーバーにバックアップされているため、データベースに格納する必要があります。 イメージをフォルダに保存することは解決策ではありません。私はデータベースに画像を保存できると思っていますが、アップロードしているすべての画像のサムネイルを作成する必要があります。それは私の問題です、どのようにそれらのtmpファイルからサムネイルを作成するのですか? を作成しました。が機能しません。そのサムネイルの内容を取得してデータベースに保存できません。

これはコンテンツを返さないイメージのサイズを変更するために使用したコードです。

function resize_image($file, $w, $h, $crop=FALSE) { 
    list($width, $height) = getimagesize($file); 
    $r = $width/$height; 
    if ($crop) { 
     if ($width > $height) { 
      $width = abs(ceil($width-($width*abs($r-$w/$h)))); 
     } else { 
      $height = abs(ceil($height-($height*abs($r-$w/$h)))); 
     } 
     $newwidth = $w; 
     $newheight = $h; 
    } else { 
     if ($w/$h > $r) { 
      $newwidth = $h*$r; 
      $newheight = $h; 
     } else { 
      $newheight = $w/$r; 
      $newwidth = $w; 
     } 
    } 
    $src = imagecreatefromjpeg($file); 
    $dst = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    return $dst; 
} 

これは、フォームがポストされた後に使用されている私のコードです:今、それだけでアップロードされたすべてのファイルを表示します。

for($i=0;$i< count($_FILES['upload_file']['tmp_name']);$i++) 
{ 

     $size = getimagesize($_FILES['upload_file']['tmp_name'][$i]); 
     $name = $_FILES['upload_file']['name'][$i]; 
     $type = $size['mime'];   
     $file_size_bits = $size['bits']; 
     $file_size_width = $size[0]; 
     $file_size_height = $size[1]; 
     $name = $_FILES['upload_file']['name'][$i]; 
     $image_size = $size[3]; 
     $uploadedfile = $_FILES['upload_file']['tmp_name'][$i]; 
     $tmpName = base64_encode(file_get_contents($_FILES['upload_file']['tmp_name'][$i])); 
     $sImage_ = "data:" . $size["mime"] . ";base64," . $tmpName; 
     echo '<p>Preview from the data stored on to the database</p><img src="' . $sImage_ . '" alt="Your Image" />'; 


    } 

アップロードするファイルのサムネイルを作成する必要があります。どのように私はそれを達成するのですか?

お知らせください。

ありがとうございました。

乾杯

+0

あなたはImageMagickのを使用してみましたか? http://www.imagemagick.org/Usage/thumbnails/ – Willcodeforfun

答えて

1

これはあなたの大きな問題である:

return $dst; 

$dstは、画像リソース、ではない画像データです。

画像データを代わりに送信するには、imagejpeg()またはimagepng()を使用してください。

これらの関数はブラウザにデータストリームを出力するため、出力バッファ関数を使用して出力された画像データをブラウザに送信するのではなくキャプチャします。

ので、

return $dst; 

と交換してください:

ob_start(); 
imagejpeg($dst, NULL, 100); // or imagepng($dst, NULL, 0); 
$final_image = ob_get_contents(); 
ob_end_clean(); 
return $final_image; 
+1

はい、ありがとうございます!コードをあなたのソリューションに置き換え、返された値をコード化し、それは魅力的に機能しました!! ありがとうございました! – Ash

関連する問題