我使用处理图像的脚本(http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop-v11/),然后创建缩略图。
实际上我不想在文件系统上存储图像,但我想将它们存储在BLOB字段中的mysql数据库中。
我可以先在fs上存储创建的缩略图,将文件存储在数据库中,然后我可以从FS中删除拇指。
有没有办法直接将图像存储在数据库上?
这是功能:
function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$thumb_image_name);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$thumb_image_name,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$thumb_image_name);
break;
}
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
答案 0 :(得分:2)
在返回的缩略图上使用file_get_contents()
,然后将结果写入数据库blob字段。
$image = file_get_contents($thumbnail);
mysql_query("INSERT INTO tblName (fieldName) VALUES ('{$image}')");
话虽如此,我鼓励你真正考虑你在做什么。根据我的理解,从数据库中提取的图像不会被缓存。此外,使用更多资源,数据库连接将保持打开更长时间。此外,您的数据库大小将快速增长,从而使管理迁移变得更加费力。
答案 1 :(得分:2)
您可以将二进制数据(如图像)存储到数据库中的BLOB
字段中。它就像将文件内容放入INSERT
语句一样简单。但是,我强烈建议你看一下这些主题。将图像存储在数据库中通常不是最好的方法:
User Images: Database or filesystem storage?
Storing images in database: Yea or nay?
Should I store my images in the database or folders?
Would you store binary data in database or folders?
Store pictures as files or or the database for a web app?
Storing a small number of images: blob or fs?
store image in filesystem or database?
答案 2 :(得分:0)
正如J. Sampson所说,这不是存储图像的好方法,但它是可能的。像Jonathan那样说,然后从db中获取数据,类似于:
<?php
$query = mysql_query("SELECT * FROM tbl WHERE id = 'blaa';");
$data = mysql_fetch_array($query);
//Then create image with function
imagecreatefromstring($data['imgdata'])
?>