Skip to content

Instantly share code, notes, and snippets.

@princenaman
Forked from jfsiii/image2base64.js
Created November 26, 2019 13:05
Show Gist options
  • Save princenaman/e788df5f9aa96b99b0738f836a11c140 to your computer and use it in GitHub Desktop.
Save princenaman/e788df5f9aa96b99b0738f836a11c140 to your computer and use it in GitHub Desktop.

Revisions

  1. @jfsiii jfsiii revised this gist Sep 10, 2012. 1 changed file with 39 additions and 27 deletions.
    66 changes: 39 additions & 27 deletions image2base64.js
    Original file line number Diff line number Diff line change
    @@ -1,33 +1,45 @@
    // http://localhost:8888/?url=http://nodejs.org/logo.png
    // Uses [request](https://github.com/mikeal/request)
    // /?url=http://nodejs.org/logo.png
    // /?uri=http://nodejs.org/logo.png
    // /?url=http://nodejs.org/logo.png&cb=cbName
    // /?url=http://nodejs.org/logo.png&callback=cbName

    var fs = require('fs');
    var url = require('url');
    var http = require('http');
    var port = 8888;
    var fs = require('fs');
    var url = require('url');
    var http = require('http');
    var request = require('request');
    var port = 8888;
    var server = http.createServer(function requestListener(httpRequest, httpResponse) {
    var params = url.parse(httpRequest.url, true).query;
    var imageURL = params.url || params.uri || params.image;
    var callbackName = params.callback || params.cb || '';

    http.createServer(function requestListener(request, response) {
    if (request.url === "/favicon.ico") return;
    if (!imageURL) return httpResponse.end();

    var imageURL = url.parse(request.url, true).query.url;
    http.get(imageURL, function onImageResponse(imageResponse) {
    var body = "";
    request(
    {url: imageURL, encoding: 'binary'},
    function onImageResponse(error, imageResponse, imageBody) {
    if (error) throw error;

    imageResponse.setEncoding('binary');
    var imageType = imageResponse.headers['content-type'];
    var base64 = new Buffer(imageBody, 'binary').toString('base64');
    var dataURI = 'data:' + imageType + ';base64,' + base64;
    var jsonString = JSON.stringify({
    code: imageResponse.statusCode,
    desc: http.STATUS_CODES[imageResponse.statusCode],
    type: imageType,
    orig: imageURL,
    data: dataURI
    });
    var jsonpString = callbackName + '(' + jsonString + ')';
    var payload = callbackName ? jsonpString : jsonString;

    imageResponse.on('data', function onImageResponseData(chunk) {
    if (imageResponse.statusCode == 200) body += chunk;
    });
    httpResponse.writeHead(imageResponse.statusCode, {'Content-Type': 'application/json'});
    httpResponse.write(payload);
    httpResponse.end();
    }
    );
    });

    imageResponse.on('end', function onImageResponseEnd() {
    var type = imageResponse.headers["content-type"];
    var prefix = "data:" + type + ";base64,";
    var base64 = new Buffer(body, 'binary').toString('base64');
    var data = prefix + base64;

    response.writeHead(200, {"Content-Type": "application/json"});
    response.write(JSON.stringify({data: data}));
    response.end();
    });
    });
    }).listen(port);
    console.log('Server created and listening on port', port);
    server.listen(port);
    console.log('base64 server created and listening on port', port);
  2. @jfsiii jfsiii created this gist Sep 6, 2012.
    33 changes: 33 additions & 0 deletions image2base64.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    // http://localhost:8888/?url=http://nodejs.org/logo.png

    var fs = require('fs');
    var url = require('url');
    var http = require('http');
    var port = 8888;

    http.createServer(function requestListener(request, response) {
    if (request.url === "/favicon.ico") return;

    var imageURL = url.parse(request.url, true).query.url;
    http.get(imageURL, function onImageResponse(imageResponse) {
    var body = "";

    imageResponse.setEncoding('binary');

    imageResponse.on('data', function onImageResponseData(chunk) {
    if (imageResponse.statusCode == 200) body += chunk;
    });

    imageResponse.on('end', function onImageResponseEnd() {
    var type = imageResponse.headers["content-type"];
    var prefix = "data:" + type + ";base64,";
    var base64 = new Buffer(body, 'binary').toString('base64');
    var data = prefix + base64;

    response.writeHead(200, {"Content-Type": "application/json"});
    response.write(JSON.stringify({data: data}));
    response.end();
    });
    });
    }).listen(port);
    console.log('Server created and listening on port', port);