Thumbnailing ve sonra Wordpress PHP ile bir Blob'a olarak kaydetme

2 Cevap php

Çalışması gerektiği gibi aşağıdaki kod görünüyor; fonksiyonu çalıştırıldıktan sonra ancak, veritabanında blob yalnızca 0 içerir. Aşağıdaki kodu doğru görünüyor mu? Eğer değilse bunu nasıl düzeltebilirim?

$tmpName  = $_FILES['picture']['tmp_name'];

$fp      = fopen($tmpName, 'r');
$binary = fread($fp, filesize($tmpName));
fclose($fp);

$originalImage = imagecreatefromstring($binary);
$tempImage = imagecreate(100,100);
imagecopyresized($tempImage,$originalImage,0,0,0,0,100,100);
ob_start();
imageJPEG($tempImage);
$thumbnail = ob_get_contents();
ob_end_clean();

$wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = $thumbnail WHERE id=$id'");

:) Teşekkürler!

2 Cevap

Bu en etkili yöntem olarak muhtemelen, onaltılık olarak DB blob / resim verilerini göndermek isterim:

if ( is_uploaded_file($_FILES['picture']['tmp_name']) ) {
    $originalImage = imagecreatefromjpeg($_FILES['picture']['tmp_name']);
    $thumbImage = imagecreatetruecolor(100, 100);
    imagecopyresized($thumbImage, $originalImage, 0, 0, 0, 0, 100,100);

    imagedestroy($originalImage); // Free the memory as soon as possible

    ob_start();
    imagejpeg( $thumbImage, NULL, JPEG_QUALITY);
    $thumbData = ob_get_contents();
    ob_end_clean();

    imagedestroy($thumbImage);


    $wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = x'".bin2hex($thumbData)."' WHERE id=$id'");
}

x'".bin2hex($thumbData)."' x onaltılık dize içeriğini işaretler unutmayın.

Please note:
There is a lot of debate about if it is a good idea to store images in the Database or not. The general consensus is that it is a bad idea, except when:

  1. Sizin görüntüleri boyutu 2MB daha az
  2. Siz (ve hatta 1GB de bunu germe) toplam artık tan 1GB saklamak niyetinde.

Diğer tüm durumlarda, diskteki görüntüyü saklamak ve veritabanı dedi görüntünün konumunu saklamak.

Kesinlikle tırnak eklemek gerekir; ve sonra guess Eğer mysql_real_escape_string() tüm resim kodu gerekir.

$thumbnail = mysql_real_escape_string($thumbnail);

$wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = '$thumbnail' WHERE 
             id='$id'");