nodejs操作画像
ソフトウェアのインストール
まず、imagmagickとgraphic smagicをインストールします.私はmacを使っていますので、homebrewを使います.
brew install imagemagick
brew install graphicsmagick
brew install ghostscript
npmパッケージの取り付けnpm i gm --save
通常の操作画像を読み込み
//graphMagick
const gm = require('gm');
//imageMagick
const gm = require('gm').subClass({imageMagick: true});
サイズを設定等比ズーム
var imgObj = gm(imagePath).resize(width, height);
固定ズームlet width = 100, height = 100;
var imgObj = gm(imagePath).resize(width, height, "!");
"!"
の感嘆符は、元のピクチャの比率にかかわらず、スケーリングされたピクチャのサイズがwidth × height
であるため、画像の変形を引き起こす可能性がある.条件付きスケーリング
var imgObj = gm(imagePath).resize(width, height, ");
">"
または" , , 。 。
を通じてvar imgObj = gm(imagePath).resize(width, height, ");
画像にテキストを追加中国語を追加
中国語のフォントを追加するには、まずフォントを読み込む必要があります.ImageMagickの中国語フォントが見つからないので、ここではOSXの標準フォントをそのまま使います.
const font = "/Library/Fonts/ .ttf";
let x = 0, y = 0, color = "white";
var imgObj = gm(imagePath).fill(color).font(font,120).drawText(x, y, " ")
gravity
に合わせて置くこともできます.let x = 100, y = 0, color = "white";
var imgObj = gm(imagePath).fill(color).font(font,120).drawText(x, y, " ", "North");
gravity
は東南の西北を支持して、東南、西南、東北、西北がまだあります.このときのオフセット量は、基本的な位置決め後にシフトします.画像重ね合わせ
写真の上に顔写真を載せて、右下にこのように処理できます.
var imgObj = gm(imagePath).composite(headimgPath).gravity("SouthEast").geometry(`+50+50`)
角の背景をテキストに追加します.考えは文字の長さとフォントの大きさによって背景の大きさを計算してから、文字を上に置くことです.
const font = "/Library/Fonts/ .ttf";
let text = " ";
let width = text.length * fontSize + fontSize,
height = fontSize + fontSize,
margin = fontSize / 2,
fontSize = 18;
let imgObj = gm(width, height, "none")
.fill("#FAFAFA").drawRectangle(0, 0 , width , height, margin, margin)
.fill("black").font(font, fontSize).drawText(margin, margin / 2 + fontSize, text);
出力三つの出力があります.ファイルを保存し、バイナリストリームを出力し、ブザーを出力します.
const co = require('co');
const thunkify = require('thunkify');
co(function*(){
// imgObj
let buffer = yield thunkify(imgObj.toBuffer).call(imgObj, "PNG");
yield thunkify(imgObj.write).call(imgObj, filePath);
})
おわりに具体的な提案はやはり文書を主とします.