2012-09-01 15 views
12

मैं कई छवियाँ है - Base64 स्ट्रिंग्स के रूप में सहेजा और अब मैं उनमें से थंबनेल पाने के लिए इन छवियों का आकार करना चाहते हैं ...का आकार बदला जा बेस 64 छवियाँ

बेस्ट उन्हें आकार बदलने के लिए जावास्क्रिप्ट (नोड-सर्वर) का उपयोग किया जाएगा, लेकिन php के साथ भी उनका आकार बदलना संभव होगा।

Node.js में अग्रिम

उत्तर

3

कोई विचार है कि ऐसा कैसे (या अच्छी तरह से, कुछ भी) में धन्यवाद, लेकिन अपने प्रश्न का पीएचपी बिट निश्चित रूप से संभव है। बेस 64 को पार्स करने के बाद, इसे GD image और फिर resample में लोड करें।

http://php.net/manual/en/function.imagecopyresampled.php

+0

अच्छी तरह से मुझे कोई लिखने है मेरे सर्वर पर अधिकार - मैं इस अंगूठे को अपने node.js ऐप से कैसे जोड़ सकता हूं? कोई उपाय? –

+0

यह "कोई विचार नहीं है कि यह कैसे करें (या अच्छी तरह से, कुछ भी) node.js में" मेरे लिए थोड़ा ऊपर, मुझे डर है। उम्मीद है कि किसी और के पास एक अच्छा विचार हो सकता है। –

+0

2 दिनों के लिए इसके लिए उत्तर खोज रहे हैं ... सामान्यतः यह नोड के साथ ठीक काम करेगा - लेकिन मेरे नोड-ऐप में मेरे पास कोई राइट-राइट्स नहीं है ... यह भी –

4

आपका सबसे अच्छा शर्त PHP में PHPThumb उपयोग करने के लिए है।

+0

किसी भी विचार से php के साथ आकार बदलने के बाद मेरे node.js ऐप में उन्हें कैसे पहुंचाया जाए? –

9

मैं the method from Jon Hanna करने के लिए सहमत: पार्सिंग करो Base64code तो करने के लिए इसे लोड

एक वैकल्पिक ImageMagick आह्वान करने के लिए लेकिन आप पसंद करते हैं है अनुकरण से पहले जीडी छवि। हालांकि इसे डेटा के रूप में वापस लाने के लिए यह उतना आसान नहीं है जितना मैं करता हूं। GAE में php पर इसे php.ini फ़ाइल में output_buffering = "On" सेट करके enable output buffering की आवश्यकता होगी।

यहां मैं विस्तार से विस्तार से समझाता हूं। http://php.net/manual/en/function.imagecopyresampled.php

: http://php.net/manual/en/function.imagecreatefromstring.php

// Create image resource from Base64code 
$data64 = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl' 
     . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr' 
     . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r' 
     . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='; 
$image = imagecreatefromstring(base64_decode($data64)); 

यह एक छवि संसाधन जो सीधे रीसेंपल कार्य करने के लिए रखा जा सकता है है:

यह दस्तावेज़ संसाधन छवि बनाने के लिए Base64code की पार्सिंग का उपयोग कर संदर्भ के रूप में लिया जाता है

// Resample $image_p = imagecreatetruecolor($new_w, $new_h); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_w, $new_h, $org_w, $org_h); 

परिणाम भी एक छवि संसाधन है। इसे डेटा के रूप में प्राप्त करने के लिए हमें बफरिंग की आवश्यकता है। नीचे मैं एक GCS बाल्टी my project पर एक वेबसाइट के रूप में कर सकते हैं तो मैं स्टोर & प्रदर्शन यह सीधे सेट
how to create a base64encoded string from image resource

// Buffering 
ob_start(); 
imagepng($image_p); 
$data = ob_get_contents(); 
ob_end_clean(); 

देखें दस्तावेज़ का उपयोग करना: https://cloud.google.com/storage/docs/website-configuration#tips

//Store & Display 
$context = stream_context_create([ 
    'gs' =>[ 
     'acl'=> 'public-read', 
     'Content-Type' => 'image/jpeg', 
     'enable_cache' => true, 
     'enable_optimistic_cache' => true, 
     'read_cache_expiry_seconds' => 300, 
    ] 
]); 
file_put_contents("gs://mybucket/resample/image.jpeg", $data, false, $context); 
header("Location: http://mybucket/resample/image.jpeg"); 
+0

वर्थ पॉइंटिंग के साथ-साथ 'imagecopyresampled()' 'imagecopyresized()' की तुलना में बहुत बेहतर गुणवत्ता का उत्पादन करता है क्योंकि यह इंटरपोलेट करता है। – garrettlynch

संबंधित मुद्दे