2011-05-24 18 views
10

क्या यह एक छवि फ़ाइल में ब्लॉब को कनवर्ट करने के लिए php और mysql डेटाबेस के साथ संभव है?PHP: एक ब्लॉब को एक छवि फ़ाइल में कनवर्ट करें

+1

कृपया अधिक जानकारी जोड़ें। बीएलओबी क्षेत्र में क्या होता है? तुम क्या करने की योजना बना रहे हो? –

+1

यदि यह एक छवि है जो बीएलओबी के रूप में संग्रहीत है, हाँ। –

+0

क्या आपने हेडर सेट करने का प्रयास किया और फिर इस ब्लॉब को पढ़ा? – k102

उत्तर

4

यदि बीएलओबी में किसी छवि का बाइनरी डेटा होता है (जैसे पहचानने योग्य प्रारूप जैसे टिफ, पीएनजी, जेपीईजी, आदि), बीएलओबी की सामग्री लें, इसे एक फाइल में लिखें, और voilà ... आपको मिल गया एक छवि।

कुछ अजीब ऑपरेशन सिस्टम पर आपको आउटपुट फ़ाइल को एक संवाददाता एक्सटेंशन देना होगा, ताकि छवि फ़ाइल को इस तरह पहचाना जा सके।

1

आप MySQL तालिका ब्लॉब क्षेत्र में छवियों भंडारण और इन छवियों को प्राप्त करना चाहते हैं रहे हैं तो यह लेख आपके लिए उपयोगी है:

उपरोक्त लेख से निम्नलिखित भाग में देखो:

<?php 
if(isset($_REQUEST['id'])) 
{ 
    // get the file with the id from database 
     include “dbconfig.php”; 
     $dbconn = mysql_connect($dbhost, $dbusr, $dbpass) or die(”Error Occurred-”.mysql_error()); 
     mysql_select_db($dbname, $dbconn) or die(”Unable to select database”); 

     $id = $_ REQUEST ['id']; 
     $query = “SELECT `img_name`, `img_type`, `img_size`, `img_data` 
         FROM img_tbl WHERE id = ‘$id’”; 

     $result = mysql_query($query) or die(mysql_error()); 
     list($name, $type, $size, $content) = mysql_fetch_array($result); 

     header(”Content-length: $size”); 
     header(”Content-type: $type”); 
     print $content; 

     mysql_close($dbconn); 
} 
?> 
+2

का उपयोग करके इस उदाहरण से कॉपी/पेस्ट करने के लिए, कृपया ध्यान दें कि यह खराब उपयोग करता है उद्धरण चिह्न – kurdtpage

8

आप जो कुछ PHP छवि लाइब्रेरी स्थापित कर चुके हैं उसके आधार पर आप कुछ अलग-अलग तरीकों का उपयोग कर सकते हैं। यहां कुछ उदाहरण दिए गए हैं।

नोट, इको < आईएमजी > केवल एक चाल है जिसका उपयोग मैं एक ही PHP स्क्रिप्ट से एकाधिक छवियों को प्रदर्शित करने के लिए करता हूं जब एक MySQL परिणाम संसाधन के माध्यम से लूपिंग करता है। आप हेडर() के माध्यम से आउटपुट के साथ-साथ आउटपुट के रूप में भी दिखा सकते थे।

जी.डी.:

$image = imagecreatefromstring($blob); 

ob_start(); //You could also just output the $image via header() and bypass this buffer capture. 
imagejpeg($image, null, 80); 
$data = ob_get_contents(); 
ob_end_clean(); 
echo '<img src="data:image/jpg;base64,' . base64_encode($data) . '" />'; 

ImageMagick (Imagick):

$image = new Imagick(); 
$image->readimageblob($blob); 
echo '<img src="data:image/png;base64,' . base64_encode($image->getimageblob()) . '" />'; 

GraphicsMagick (gMagick):

$image = new Gmagick(); 
$image->readimageblob($blob); 
echo '<img src="data:image/png;base64,' . base64_encode($image->getimageblob()) . '" />'; 
3

मेरे मामले में मैं base64_decode उपयोग करने के लिए ब्लॉब छवियों को सही ढंग से परिवर्तित करने के लिए किया था फाइल में

$path = "/tmp/images"; 
$sql = "SELECT image_name, image_content FROM images"; 

$result = mysql_query($sql, $db_con); 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $sql; 
    die($message); 
} 

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $image = $row["image_contents"]; 
    $name = $row["image_name"]; 

    // option 1 
    $file = fopen($path."/".$name,"w"); 
    echo "File name: ".$path."$name\n"; 
    fwrite($file, base64_decode($image)); 
    fclose($file); 

    // option 2 (oneliner) 
    // file_put_contents($path."/".$name, base64_decode($image)); 
} 
संबंधित मुद्दे