GR-PEACH JPEGモジュール (jpeg)

jpeg モジュールは、GR-PEACHマイコンに搭載されたJPEGコーデックを用いてJPEG画像のエンコード・デコードを行います。

jpeg.encode(image, callback)

ビットマップ画像をJPEG画像に変換します。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。

使用例

var jpeg = require('jpeg');
var fs = require('fs');
var AlignedBuffer = require('aligned_buffer').AlignedBuffer;

var bitmap = new AlignedBuffer(480 * 272 * 2, 32);
/* bitmap に画像データを格納する... */
var image = {
  width: 480,
  height: 272,
  format: 'ycbcr422',
  bitmap: bitmap
};
jpeg.encode(image, function(err, jpegData) {
  if (err) {
    console.log(err);
    return;
  }
  /* ファイルに保存する */
  fs.writeFile('/sd/output.jpg', jpegData.toBuffer(), function(err) {
  });
});

jpeg.encodeSync(image)

jpeg.encode()の同期版です。処理は同期で行われ、処理が完了するとJPEGデータを格納したバッファを返却します。失敗すると例外をスローします。

使用例

var jpeg = require('jpeg');
var fs = require('fs');
var AlignedBuffer = require('aligned_buffer').AlignedBuffer;

var bitmap = new AlignedBuffer(480 * 272 * 2, 32);
/* bitmap に画像データを格納する... */
var image = {
  width: 480,
  height: 272,
  format: 'ycbcr422',
  bitmap: bitmap
};
try {
  var jpegData = jpeg.encodeSync(image);
  /* ファイルに保存する */
  fs.writeFileSync('/sd/output.jpg', jpegData.toBuffer());
} catch (err) {
  console.log(err);
}

jpeg.decode(jpegData, config, callback)

JPEGデータをビットマップ画像に変換します。処理は非同期で行われ、処理が完了または失敗すると、コールバック関数が呼び出されます。

使用例

var AlignedBuffer = require('aligned_buffer').AlignedBuffer;
var jpeg = require('jpeg');
var fs = require('fs');
var config = {
  width: 480,
  height: 272,
  format: 'argb8888',
  alpha: 0xFF
};
fs.readFile('/sd/input.jpg', function(err, jpegData) {
  if (err) {
    /* ファイル読み込み失敗... */
    console.log(err);
    return;
  }
  var buf = new AlignedBuffer(jpegData, 32);
  jpeg.decode(buf, config, function(err, image) {
    if (err) {
      /* デコード失敗... */
      console.log(err);
      return;
    }
    /* 成功... */
  });
});

jpeg.decodeSync(jpegData, config)

jpeg.decode()の同期版です。処理は同期で行われ、処理が完了するとビットマップ画像を格納したオブジェクトを返却します。失敗すると例外をスローします。

使用例

var AlignedBuffer = require('aligned_buffer').AlignedBuffer;
var jpeg = require('jpeg');
var fs = require('fs');
var config = {
  width: 480,
  height: 272,
  format: 'argb8888',
  alpha: 0xFF
};
try {
  var jpegData = fs.readFileSync('/sd/input.jpg');
  var buf = new AlignedBuffer(jpegData, 32);
  var image = jpeg.decodeSync(buf, config);
  /* 成功... */
} catch (err) {
  console.log(err);
}