Thumbnailing and then Saving as a Blob with PHP in Wordpress
The below code seems like it should work; however, the blob in the database only contains 0 after the function is run. Does the below code look accurate? If not how can I fix it?
$tmpName = $_FILES['p开发者_JAVA百科icture']['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'");
Thank :)!
You would probably want to send the blob/picture data to your DB as hex, as it is the most efficient method:
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'");
}
note the x'".bin2hex($thumbData)."'
the x
marks the contents of the string as hex.
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:
- Your images are less than 2MB in size
- You intend to store no more tan 1GB in total (and even at 1GB you are stretching it).
In all other cases, store the image on disk and store the location of said image in your database.
You definitely need to add quotes; and then I guess you would have to mysql_real_escape_string()
the whole thumbnail code.
$thumbnail = mysql_real_escape_string($thumbnail);
$wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = '$thumbnail' WHERE
id='$id'");
精彩评论