JavaScriptを使用してPhotoshopで画像の回転を自動化する

1つのプロジェクトでは、多数の同一の画像を作成する必要がありましたが、それぞれを前の画像に対して1度回転させる必要がありました。



最初に思いついたのは、GDライブラリのimagerotateを使用したphpスクリプトです。 率直に言って、やや私が望んでいたものではないことがわかりました。 例で説明する方が簡単です:



画像



したがって、回転すると、画像は元の画像よりも多くなります。 Photoshop(フリートランスフォーム)で同様の操作を行うことにより、この問題を回避します。 ほとんどの場合、GDを使用すると解決策が見つかりますが、長い間、Photoshopの一部の操作を自動化することを試みました。



そのため、回転操作とファイルへの書き込みを自動化する必要があります。

元の画像は矢印付きのコンパスです。 矢印は別のレイヤーにあり、この矢印の360個の画像を取得する必要があります。 このようなもの:
画像画像




汎用性を高めるために、スクリプトを複雑にします-各回転を別々のファイルに書き込むだけでなく、1つの幅の広い画像を作成できるようにします。 このようなもの:



画像



私は古いPhotoshop、CS1を持っているので、そのためのスクリプトがあります。 ただし、CS2では問題なく動作し、古いバージョンでは終了するのは難しくありません。 コード内のコメント、最後の例。



コード:

//   var Angle=360; //     var Frames=360; //  .         . var saveFile = 1; //      : 0 -   , 1 -   var Negative=""; //      ,    if (app.documents.length > 0) { //     app.preferences.rulerUnits = Units.INCHES; var srcDoc = app.activeDocument; var x2 = srcDoc.width * srcDoc.resolution; var y2 = srcDoc.height * srcDoc.resolution; //   srcDoc.selection.select(Array (Array(0, 0), Array(x2, 0), Array(x2, y2), Array(0, y2)), SelectionType.REPLACE, 0, false); //   srcDoc.selection.copy(); //     ,     . //    ,       app.preferences.rulerUnits = Units.PIXELS; var iFrames = 1; if (saveFile == 1) { iFrames = Frames; } var pasteDoc = app.documents.add(Number(x2*iFrames), Number(y2), srcDoc.resolution, "Rotated Layers", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); //   pasteDoc.selection.select(Array (Array(0, 0), Array(x2, 0), Array(x2, y2), Array(0, y2)), SelectionType.REPLACE, 0, false); //     pasteDoc.paste(); layerRef = pasteDoc.layers[0]; //   -         ,     Angle = Angle / Frames; if (saveFile == 0) { //    SaveToFile('0'); //       CS1,      layerRef.visible = false; } //      for ( var i = 1; i < Frames; i++ ) { var xs = x2 * i; pasteDoc.selection.select(Array (Array(xs, 0), Array(xs+x2, 0), Array(xs+x2, y2), Array(xs, y2)), SelectionType.REPLACE, 0, false); pasteDoc.paste(); layerRef = pasteDoc.layers[0]; layerRef.rotate(Negative + Angle*i); if (saveFile == 0) { SaveToFile(i); layerRef.visible = false; } } } else { alert("   - "); } function SaveToFile(n) { //      .       . var saveFile = new File("C:/test/"+n+".png"); pngSaveOptions = new PNGSaveOptions(); app.activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); }
      
      





使用方法:

  1. スクリプトファイルにRotate.jsなどの名前を付けて、Photoshopディレクトリに配置します。Photoshop\ Presets \ Scripts \
  2. パラメーターの編集。
  3. 処理が必要な画像を開き、[ファイル]-> [スクリプト]メニューで[回転]スクリプトを選択します。


デモ 写真はクリック可能です。 矢印をクリックします-回転します。 この例では、1つの大きな画像を作成する方法が使用されています。 回転すると、サイクル内の画像が目的のピクセル数だけシフトし、矢印の滑らかな回転をシミュレートします。



高さ110px、幅39600pxの大きなPNGを1つ作成する予定でしたが、FirefoxとChromeは表示を拒否しました(IE8、Opera、Safariはできました)。 私は2つの部分に分けなければなりませんでした。 各部品の重量は約620Kbでした。



実際の使用



All Articles