将图像存储到DB中

时间:2009-12-17 01:18:47

标签: php gd blob

我使用处理图像的脚本(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;

}

3 个答案:

答案 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'])

?>