Photoshop에서 서체별 문자 이미지를 일괄 생성

ExtendScript Toolkit에서 사용하는 스크립트입니다.
지정한 문자로 지정한 개수분, 소지의 서체로부터 랜덤으로 선택된 것의 문자 화상을 생성합니다.
이미지 해석의 정밀도를 확인하기 위한 이미지를 생성하는 데 사용할 수 있을까 생각합니다.

생성된 이미지의 예





ExtendScript Toolkit



Adobe 애플리케이션을 JavaScript로 자동화하는 도구.
Mac이라면 아래에서 시작:
/Applications/Adobe ExtendScript Toolkit CC/ExtendScript Toolkit.app

ExtendScript
function makeTypeImage(textValue, generatedCount) {
    ///生成する個数のリミッター(システム書体数が多すぎる時に、ここの値を修正して使用)
    const MAX_GENERATED_COUNT = 10000;
    ///保存先を指定
    folderName = Folder.selectDialog("フォルダを選択してください");
    if (!folderName) {
        return;
    }
    ///システム書体一覧を取得
    var PsFonts = app.fonts;
    ///何個生成するか(0より小さい数値を入力するとシステム書体全てが対象)
    var varGeneratedCount = PsFonts.length;
    if (generatedCount > 0) {
        varGeneratedCount = generatedCount;
    }
    ///書体が多すぎる時のリミッター
    if (varGeneratedCount > MAX_GENERATED_COUNT) {
        varGeneratedCount = MAX_GENERATED_COUNT;
    }
    ///ピクセルで指定するための設定
    var originalUnit = preferences.rulerUnits;
    preferences.rulerUnits = Units.PIXELS;
    for (var i = 0; i < varGeneratedCount; i++) {
        ///書類作成(100×100ピクセル)
        var docRef = app.documents.add(100, 100);
        var artLayerRef = docRef.artLayers.add();
        artLayerRef.kind = LayerKind.TEXT;
        var textItemRef = artLayerRef.textItem;
        textItemRef.contents = textValue;
        ///書体名を指定(必ずPostScript名)
        ///PsFonts[数値]の数値を書体数の範囲内でランダムにすると使用書体の固定化がされない。
        ///注意事項として、アイコンの書体が指定された場合、画像解析としては使いものにならない。
        var varFontNumber = i;
        if (generatedCount > 0) {
            varFontNumber = Math.floor(Math.random() * PsFonts.length);
        }
        var varTextFont = String(PsFonts[varFontNumber].postScriptName);
        textItemRef.font = varTextFont;
        ///フォントサイズ
        textItemRef.size = 80;
        ///フォント座標指定
        textItemRef.position = new Array(50, 80);
        textItemRef.justification = Justification.CENTER;
        ///レイヤー結合
        activeDocument.mergeVisibleLayers();
        var fileobj = new File(folderName + "/JPEG_" + String(i));
        ///JPEGで保存
        var saveOptions = new JPEGSaveOptions;
        saveOptions.embedColorProfile = true;
        saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
        saveOptions.quality = 12;
        // 他、各プロパティを設定
        app.activeDocument.saveAs(fileobj, saveOptions, false, Extension.LOWERCASE)
        activeDocument.close(SaveOptions.DONOTSAVECHANGES);
        docRef = null
        artLayerRef = null
        textItemRef = null
    }
}
///makeTypeImage(文字列、生成する個数);
makeTypeImage("A", 15);

이미지 크기, 글꼴 크기 등을 적절히 변경하십시오.
이 스크립트의 포인트는, 서체의 지정은 PostScript명으로 지정하는 것이라고 생각합니다.

사용 환경:
Adobe Photoshop CC(2015.5)

텍스트 레이어의 글꼴 지정 알레콜레
htp // d. 하테나. 네. jp/타코마루/20130618/1371574276
Photoshop 문서를 JavaScript로 별칭 저장
htp // d. 하테나. 네. jp / chal ny_ht / 20140725/1406299387

수정



16/07/11
지정 개수가 1보다 작은 값을 지정했을 경우, 모두 서체를 사용하도록(듯이) 하고 있었습니다만, 그 때에 서체를 중복시키지 않기 위해(때문에), 랜덤이 아니고 일련번호로 지정되도록(듯이) 했습니다.
생성 개수에 리미터를 추가했습니다.

좋은 웹페이지 즐겨찾기