function gd_test(fmt) { img.save('test.pic', fmt); var img1 = gd.load('test.pic'); fs.unlink('test.pic'); img1 = gd.load(img.getData(fmt)); assert.equal(img1.width, 440); assert.equal(img1.height, 240); assert.equal(img1.format, fmt); }
exports.init = function(data, format) { var img; try { img = gd.load(data); } catch (e) { return; } var w = img.width, h = img.height; if (!format && img.format === gd.GIF) return img; if (w <= 1440 || h <= 1440) return img; if (w <= h && w > 1440) { h = h * 1440 / w; w = 1440; } else if (h < w && h > 1440) { w = w * 1440 / h; h = 1440; } return img.resample(w, h); }
module.exports = function(v, u) { if (v.firstHeader('If-Modified-Since')) { v.response.status = 304; return; } v.response.addHeader('Last-Modified', 'Mon, 26 Nov 2012 00:00:00 GMT'); v.response.addHeader('Cache-Control', "max-age=" + 10 * 365 * 24 * 60 * 60); v.response.addHeader('Content-Type', 'image/jpeg'); var type = v.query.type || ""; if (type === "weixin") { var qrimg = gd.load(http.get("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + u).readAll()).resample(360, 360); var baseimg = gd.load(storage.getValue("04558e407a3a1c0d893f7862eef7abe8")); baseimg.copy(qrimg, 140, 60, 0, 0, 360, 360); baseimg = baseimg.resample(400, 400); v.response.write(baseimg.getData(gd.JPEG, 50)); return; } var _htOption = { width: 800, height: 800 }; var qrcode = new QRCode(_htOption); var imgbase = qrcode.makeCode(encodeURI("http://named.cn/" + u)); //群组图片 var hs = v.query.hs; if (!hs) { v.response.body.write(imgbase.getData(gd.JPEG)); } else { // + 图片缩放 图片格式 var groupimg = hs + ".t180x180.jpg"; //将群组图片信息还原 var url2img = require('utils/url2img'); var newimg = url2img(v, groupimg); newimg = image.loadimg(newimg); imgbase = gd.load(imgbase.getData(gd.JPEG)); if (newimg) { function drawPixel(newimg, imgbase) { var h = newimg.height, w = newimg.width; var oh = imgbase.height, ow = imgbase.width; var nw = ow / 3, nh = oh / 3; var white = gd.rgb(255, 255, 255); imgbase.copyResized(newimg, nw, nh, 0, 0, nw, nh, w, h); for (var x = 0; x < nw; x++) { for (var j = 0; j < 5; j++) { imgbase.setPixel(nw + x, nh + j, white); imgbase.setPixel(nw + x, 2 * nh - j, white); } } for (var y = 0; y < nh; y++) { for (var i = 0; i < 5; i++) { imgbase.setPixel(nw + i, nh + y, white); imgbase.setPixel(2 * nw - i, nh + y, white); } } return imgbase; } var res = drawPixel(newimg, imgbase); v.response.body.write(res.getData(gd.JPEG)); } } };
exports.loadimg = function(f) { return gd.load(f); }