function img(mainWindow, dir) { const electron = require('electron') const dialog = electron.dialog const fs = require('fs') var Jimp = require('jimp') var ipc = electron.ipcMain const BrowserWindow = electron.BrowserWindow ipc.on('file-select', (e, args) => { dialog.showOpenDialog( null, { properties: ['openFile', 'multiSelections'], title: '添付ファイルを選択', defaultPath: '.', filters: [ { name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'] }, { name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] }, { name: '動画', extensions: ['mp4', 'webm'] }, { name: '全てのファイル', extensions: ['*'] } ] }, fileNames => { if (!fileNames) { return false } for (var i = 0; i < fileNames.length; i++) { var path = fileNames[i] var bin = fs.readFileSync(path, 'base64') e.sender.webContents.send('resizeJudgement', [bin, 'new']) } } ) }) ipc.on('bmp-image', (e, args) => { Jimp.read(args[0], function(err, lenna) { if (err) throw err lenna.getBase64(Jimp.MIME_PNG, function(err, src) { e.sender.webContents.send('bmp-img-comp', [src, args[1]]) }) }) }) ipc.on('resize-image', (e, args) => { var ext = args[0].toString().slice(args[0].indexOf('/') + 1, args[0].indexOf(';')) if (ext == 'jpeg') { var use = 'MIME_JPEG' } else { var use = 'MIME_PNG' } var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '') var decodedFile = new Buffer(b64, 'base64') Jimp.read(decodedFile, function(err, lenna) { if (err) throw err lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function(err, src) { e.sender.webContents.send('bmp-img-comp', [src, args[1]]) }) }) }) ipc.on('stamp-image', (e, args) => { var text = args[1] var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '') var decodedFile = new Buffer(b64, 'base64') console.log(text) Jimp.read(decodedFile, function(err, image) { if (err) throw err Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then(font => { var evWidth = Jimp.measureText(font, text) var width = image.bitmap.width var height = image.bitmap.height var left = width - evWidth - 10 var top = height - 30 var color = Jimp.intToRGBA(image.getPixelColor(left, top)) console.log(left, top, color) var ave = (color.r + color.g + color.b) / 3 if (ave > 128) { image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) { e.sender.webContents.send('bmp-img-comp', [src, args[1], true]) }) } else { Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then(font => { image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) { e.sender.webContents.send('bmp-img-comp', [src, args[1], true]) }) }) } }) }) }) } exports.img = img