DB içine bir görüntü saklamak

3 Cevap php

Ben bir komut dosyası (http://www.webmotionuk.co.uk/php-jquery-image-upload-and-crop-v11/) bir görüntü işleme kullanmak ve daha sonra bir küçük resim oluşturmak.

Aslında dosya sisteminde görüntüleri depolamak istemiyorum ama ben bir BLOB alanında bir mysql db bunları saklamak istiyorum.

I FS başparmak silebilirsiniz sonra ilk fs üzerinde oluşturulan minik saklamak DB dosya depolamak ve olabilir.

Is there a way to store directly the image on the DB?

Bu fonksiyonu şudur:

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 Cevap

How to:

Iade Üzerlerine file_get_contents() kullanın ve sonra veritabanı blob alana sonuçlarını yazınız.

$image = file_get_contents($thumbnail);
mysql_query("INSERT INTO tblName (fieldName) VALUES ('{$image}')");

But, you may not want to because:

Söyleniyor, ben gerçekten ne yaptığını düşünmeye teşvik ediyorum. Veritabanından çekilen Görüntüler benim anlayış, önbelleğe olmayacaktır. Ayrıca, veritabanı bağlantıları daha fazla kaynak kullanarak, çok daha uzun süre için açıldı kalacaktır. Ayrıca, veritabanı boyutu yolda göçü yönetmek için daha zahmetli hale hızla büyüyecektir.

Bir veritabanında BLOB alana bir resim gibi ikili verileri saklayabilirsiniz. Bir INSERT deyimi içine dosya içeriğini koyarak kadar basit. Ancak, ben çok bu parçacığı bazılarına bir göz atın öneririz. Bir veritabanında bir görüntü saklanması genellikle gitmek için en iyi yol değildir:

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?

J. Sampson dediği gibi, bu görüntüleri saklamak için iyi bir yol değil, ama mümkün. Jonathan dediğim gibi yapın ve daha sonra, db buna benzer bir şey veri almak:

<?php

$query = mysql_query("SELECT * FROM tbl WHERE id = 'blaa';");
$data = mysql_fetch_array($query);

//Then create image with function
imagecreatefromstring($data['imgdata'])

?>