Skip to main content
Participant
February 25, 2024
Question

Photoshopでスクリプトを用いて文字を書き換え画像保存したい

  • February 25, 2024
  • 2 replies
  • 502 views

 

スクリプトのコードが分からず苦戦しています。

Photoshopのレイヤーにテキストで「○○さん」と書いてあり、この○○さんの○○をあらかじめコピーしておいた文字に置き換えてjpgで保存したいです。保存する画像の名前は「コピーしておいた文章+さん.jpg」にしたいと考えています

しかし、スクリプトがエラーになりできないです。

どうすればよいでしょうか?

 

 

This topic has been closed for replies.

2 replies

Ten A
Community Expert
Community Expert
February 26, 2024

ajabonさんの指摘の通りChatGTPにExtendScript書かせるのは悪手ですね。もっともらしいコードでデバッグが非常に手間です。
Photoshopはクリップボードからダイレクトにテキストを取得する手段を持ちません。スクリプトリスナーで記録してもクリップボードからペーストする部分はリテラルに置き換えられてしまいます。希望の動作は事実上不可能なものです。クリップボードを経由しない他の手段を考える必要があります。

ajabon grinsmith
Community Expert
Community Expert
February 25, 2024

現状のスクリプトを見せてもらわないとエラーの原因なんかはわかりません。

 

任意のファイル名、別形式で保存、までなら ファイルメニュー > 自動処理 > バッチ で可能かと思います。

Participant
February 25, 2024

すみません。ChatGPTにこさえてもらったものなので、自分でもよく理解できていませんでした。

以下のコードです。

 

------

 

function getClipboardText() {
var text;
var clipboardDescriptor = new ActionDescriptor();
var textDescriptor = new ActionDescriptor();
var textKey = app.charIDToTypeID('TxtD');
clipboardDescriptor.putEnumerated(app.charIDToTypeID('GtDc'), app.charIDToTypeID('GtDc'), app.charIDToTypeID('TxBx'));
var hasClipboardText = executeActionGet(clipboardDescriptor).hasKey(textKey);

if (hasClipboardText) {
text = executeActionGet(clipboardDescriptor).getString(textKey);
} else {
text = "";
}

return text;
}

// クリップボードからテキストを取得
var clipboardText = getClipboardText();
var activeDocument = app.activeDocument;
var selectedLayer = activeDocument.activeLayer;

if (selectedLayer.kind == LayerKind.TEXT) {
// テキストレイヤーのテキストをクリップボードのテキストに変更
selectedLayer.textItem.contents = clipboardText;
// 画像を保存
var savePath = ""; // 保存先のパスを指定
if (savePath != "") {
// 保存名はクリップボードから取得したテキスト+「さん」にする
var fileName = clipboardText + "さん";
// 画像を保存
var saveFile = new File(savePath + "/" + fileName + ".jpg"); // 保存形式に合わせて拡張子を変更する
var jpegOptions = new JPEGSaveOptions();
jpegOptions.quality = 10; // 画質設定(1〜12)
activeDocument.saveAs(saveFile, jpegOptions, true, Extension.LOWERCASE);
alert("画像を保存しました。");
} else {
alert("保存先のパスが指定されていません。");
}
} else {
alert("選択しているレイヤーはテキストレイヤーではありません。");
}

ajabon grinsmith
Community Expert
Community Expert
February 25, 2024

ChatGPTは自信満々に嘘をつくので、奴に書かせたスクリプトは基準や土台にしてはいけません。

 

バッチのほうをまずは検討してみてください。