スキップしてメイン コンテンツに移動

GASで画像リサイズ自動化

GASで画像リサイズ自動化

GAS応用と画像処理の概要

Google Apps Script(GAS)は、Google Workspace のサービスを自動化するための強力なツールです。画像処理に関しては、DriveApp で画像ファイルを取得し、UrlFetchApp で外部 API を呼び出すことで、リサイズやトリミング、透かし付けなどの画像編集を自動化できます。GAS だけで完結する場合は、Blob オブジェクトを操作して簡易的な画像編集を行うことも可能ですが、より高度な処理を行うには ImgApp などの外部ライブラリを組み合わせると便利です。

ここでは、GAS を使った画像処理の基本的なフローを紹介します。まずは Drive から画像を取得し、ImgApp を利用してリサイズやトリミングを行い、最後に透かしを合成してサムネイルを自動生成する一連のプロセスを構築します。

ImgAppでリサイズとトリミング

ImgApp は、Google Apps Script で画像を簡単に操作できるライブラリです。以下のコードは、指定した画像を 800x600 にリサイズし、中央をトリミングする例です。

function resizeAndCrop() {
  const file = DriveApp.getFileById('画像ファイルID');
  const blob = file.getBlob();
  const img = ImgApp.load(blob);
  const resized = img.resize(800, 600);
  const cropped = resized.crop(0, 0, 800, 600);
  const newBlob = cropped.toBlob();
  DriveApp.createFile(newBlob).setName('resized_cropped.jpg');
}

リサイズは画像のアスペクト比を保ちつつ指定サイズに合わせ、トリミングは任意の座標から切り出すことができます。ImgApp の API は直感的で、複数の画像を一括処理する場合でもループで簡単に実装できます。

透かしと合成の自動生成

画像編集の中でも透かし(ウォーターマーク)は著作権保護やブランド表示に欠かせません。ImgApp ではテキストや画像を重ね合わせる合成機能が備わっており、以下のように自動生成できます。

function addWatermark() {
  const base = ImgApp.load(DriveApp.getFileById('ベース画像ID').getBlob());
  const watermark = ImgApp.load(DriveApp.getFileById('透かし画像ID').getBlob());
  const composed = base.composite(watermark, {x: 10, y: 10, opacity: 0.5});
  DriveApp.createFile(composed.toBlob()).setName('watermarked.jpg');
}

テキスト透かしを追加したい場合は、ImgApp の drawText メソッドを利用してフォントや色、位置を指定できます。複数の画像を合成して一枚の画像にまとめることも可能で、例えばロゴと背景を重ねるだけでなく、複数の写真をグリッド状に配置するレイアウトも簡単に作れます。

サムネイル生成ワークフロー

Webサイトやブログで画像を掲載する際、サムネイルを自動生成して表示速度を向上させることは重要です。以下は、GAS と ImgApp を組み合わせてフォルダ内の画像を一括でサムネイル化し、Drive に保存するワークフローです。

function generateThumbnails() {
  const folder = DriveApp.getFolderById('フォルダID');
  const files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    if (!file.getMimeType().startsWith('image/')) continue;
    const img = ImgApp.load(file.getBlob());
    const thumb = img.resize(200, 200).crop(0, 0, 200, 200);
    const thumbFile = folder.createFile(thumb.toBlob());
    thumbFile.setName(file.getName().replace(/\\.[^.]+$/, '_thumb.jpg'));
  }
}

このスクリプトを定期的にトリガーで実行すれば、新しい画像がアップロードされるたびにサムネイルが自動生成されます。さらに、生成したサムネイルに透かしを付けることで、ブランドの一貫性を保つことも可能です。

この記事はAIによって作成されました。

コメント