अपडेट करें
मुझे यह दिलचस्प लिंक मिल गया कि PHP में आपकी समस्या को कैसे हल किया जाए । मुझे लगता है कि आप को बदलने के लिए भूल गया space
द्वारा +
के रूप में लिंक में दिखाया गया है।
मैंने इस सर्कल को http://images-mediawiki-sites.thefullwiki.org/04/1/7/5/6204600836255205.png के नमूने के रूप में लिया है जो इस तरह दिखता है:
इसके बाद मैंने इसे http://www.greywyvern.com/code/php/binary2base64 के माध्यम से डाला जिसने मुझे लौटा दिया:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAAAAACPAi4CAAAAB3RJTUUH1QEHDxEhOnxCRgAAAAlwSFlzAAAK8AAACvABQqw0mAAAAXBJREFUeNrtV0FywzAIxJ3+K/pZyctKXqamji0htEik9qEHc3JkWC2LRPCS6Zh9HIy/AP4FwKf75iHEr6eU6Mt1WzIOFjFL7IFkYBx3zWBVkkeXAUCXwl1tvz2qdBLfJrzK7ixNUmVdTIAB8PMtxHgAsFNNkoExRKA+HocriOQAiC+1kShhACwSRGAEwPP96zYIoE8Pmph9qEWWKcCWRAfA/mkfJ0F6dSoA8KW3CRhn3ZHcW2is9VOsAgoqHblncAsyaCgcbqpUZQnWoGTcp/AnuwCoOUjhIvCvN59UBeoPZ/AYyLm3cWVAjxhpqREVaP0974iVwH51d4AVNaSC8TRNNYDQEFdlzDW9ob10YlvGQm0mQ+elSpcCCBtDgQD7cDFojdx7NIeHJkqi96cOGNkfZOroZsHtlPYoR7TOp3Vmfa5+49uoSSRyjfvc0A1kLx4KC6sNSeDieD1AWhrJLe0y+uy7b9GjP83l+m68AJ72AwSRPN5g7uwUAAAAAElFTkSuQmCC
इस स्ट्रिंग को सहेजा गया है base64
जिसे मैंने अपने कोड में पढ़ा है।
var fs = require('fs'),
data = fs.readFileSync('base64', 'utf8'),
base64Data,
binaryData;
base64Data = data.replace(/^data:image\/png;base64,/, "");
base64Data += base64Data.replace('+', ' ');
binaryData = new Buffer(base64Data, 'base64').toString('binary');
fs.writeFile("out.png", binaryData, "binary", function (err) {
console.log(err); // writes out file without error, but it's not a valid image
});
मुझे एक सर्कल वापस मिल जाता है, लेकिन मजेदार बात यह है कि फाइल में बदलाव हुआ है:) ...
समाप्त
जब आप बैक इमेज पढ़ते हैं तो मुझे लगता है कि आपको हेडर सेटअप करना होगा
उदाहरण के लिए PHP पेज से इमेजपंज लें :
<?php
$im = imagecreatefrompng("test.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
मुझे लगता है कि दूसरी पंक्ति header('Content-Type: image/png');
, महत्वपूर्ण है कि आपकी छवि ब्राउज़र में प्रदर्शित नहीं होगी, लेकिन बस बाइनरी डेटा का एक गुच्छा ब्राउज़र को दिखाया गया है।
में एक्सप्रेस आप बस बस नीचे की तरह कुछ का प्रयोग करेंगे। मैं आपका gravatar प्रदर्शित करने जा रहा हूँ जो http://www.gravatar.com/avatar/cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG पर स्थित है
और जब आप एक jpeg फाइल करते हैं curl --head http://www.gravatar.com/avatar/cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG
। मैं केवल हेडर का अनुरोध करता हूं क्योंकि कर्ल बाइनरी सामान का एक गुच्छा प्रदर्शित करेगा (कंसोल पर Google क्रोम तुरंत डाउनलोड करने के लिए जाता है):
curl --head "http://www.gravatar.com/avatar/cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG"
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 03 Aug 2011 12:11:25 GMT
Content-Type: image/jpeg
Connection: keep-alive
Last-Modified: Mon, 04 Oct 2010 11:54:22 GMT
Content-Disposition: inline; filename="cabf735ce7b8b4471ef46ea54f71832d.jpeg"
Access-Control-Allow-Origin: *
Content-Length: 1258
X-Varnish: 2356636561 2352219240
Via: 1.1 varnish
Expires: Wed, 03 Aug 2011 12:16:25 GMT
Cache-Control: max-age=300
Source-Age: 1482
$ mkdir -p ~/tmp/6922728
$ cd ~/tmp/6922728/
$ touch app.js
app.js
var app = require('express').createServer();
app.get('/', function (req, res) {
res.contentType('image/jpeg');
res.sendfile('cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG');
});
app.get('/binary', function (req, res) {
res.sendfile('cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG');
});
app.listen(3000);
$ wget "http://www.gravatar.com/avatar/cabf735ce7b8b4471ef46ea54f71832d?s=32&d=identicon&r=PG"
$ node app.js