Создание эскизов, а затем сохранение в виде BLOB-объекта с помощью PHP в Wordpress - PullRequest
0 голосов
/ 20 марта 2010

Код ниже, похоже, должен работать; однако большой двоичный объект в базе данных содержит только 0 после запуска функции. Код ниже выглядит точным? Если нет, как я могу это исправить?

$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'");

Спасибо:)!

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Возможно, вы захотите отправить данные блоба / изображения в вашу БД в шестнадцатеричном виде, так как это наиболее эффективный метод:

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 помечает содержимое строки как шестнадцатеричное.

Обратите внимание:
Существует много споров о том, стоит ли сохранять изображения в базе данных или нет. По общему мнению, это плохая идея , за исключением случаев, когда:

  1. Ваши изображения размером менее 2 МБ
  2. Вы намереваетесь хранить больше не более 1 ГБ всего загара (и даже при 1 ГБ вы его растягиваете).

Во всех остальных случаях сохраняйте изображение на диске и сохраняйте местоположение указанного изображения в вашей базе данных.

1 голос
/ 20 марта 2010

Вам обязательно нужно добавить кавычки; и тогда я думаю вам придется mysql_real_escape_string() весь код миниатюры.

$thumbnail = mysql_real_escape_string($thumbnail);

$wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = '$thumbnail' WHERE 
             id='$id'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...