2017-05-04 10 views
0

画像を2つマージしようとしていますPNG画像。PHPがimagecopyからブロブとして作成した画像を保存します

imagecopy($dest, $src, $dest_x/2 - $src_x/2, $dest_y/2 - $src_y/2, 0, 0, $src_x, $src_y); 

は今、私は私のDBにblobとしてこのマージされた写真を保存したいのですが、コードは動作しません:私はこのようなimagecopy機能を使用しています。通常の画像に約100KBがある場合、私の画像は14Bytesオブジェクトとして保存されます。

try 
    { 
     $stmt = $user->get_db()->prepare("INSERT INTO photos(id_user, src, date) VALUES(:id_user, :src, :date)"); 


     $stmt->bindparam(":id_user", $_SESSION['user_id']); 
     $stmt->bindparam(":src", $dest); 
     $stmt->bindparam(":date", date("Y-m-d H:i:s")); 
     $stmt->execute(); 

    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

Images in DB

最初のものが正常に保存され(png画像正常)に結像されます。
もう1つは、イメージングされた、誤ってアップロードされたマージされた画像です。
問題は、アップロードされた写真が正しくアップロードされていないためです。

答えて

1

$destパラメータを渡すことが実際の画像ではないことが問題であると思われます。

はあなたimagecopy後にこのような何かを試してみてください:

ob_start(); 
imagepng($dest); 
$image_blob = ob_get_clean(); 

これは、変数にイメージを作成する必要があります。また

、すなわち、bindに3番目のパラメータPDO::PARAM_LOBを追加してみてください:

$stmt->bindparam(":src", $image_blob, PDO::PARAM_LOB)

あなたは、このケースでそれらを使用する必要がありますPDO Large Objects詳細を読むことができます:

大典型的には約「という意味4kb以上」

大きなオブジェクトは、本質的にテキストまたはバイナリのいずれかです。

これが役立ちます。

+0

これは機能します。どうもありがとうございました! :) – Alex

関連する問題