[5177] Adobe Photoshop:選択範囲内のレイヤーをすべて選択

投稿:  著者:



《自家製Photoshopのスクリプト》

■クリエイター手抜きプロジェクト[645]
 Adobe Photoshop CS3〜2021編 
 選択範囲内に含まれるレイヤーをすべて選択
 古籏一浩






━━━━━━━━━━━━━━━━━
■クリエイター手抜きプロジェクト[645]
Adobe Photoshop CS3〜2021編 
選択範囲内に含まれるレイヤーをすべて選択

古籏一浩
https://bn.dgcr.com/archives/20210301110100.html

─────────────────

今回は、Photoshopのスクリプトです。元々は依頼されたものなのですが、掲載してもOKということで、主要な機能だけをピックアップしました。

スクリプトの機能は、矩形範囲を選択してから実行すると、その選択範囲内にあるレイヤーを選択状態にするというものです。レイヤーセット内にレイヤーがあっても機能します。ただ、Photoshopの制約により若干の注意事項があります。

(1)実行前にはレイヤーの選択をすべて解除してください
  逆に現在のレイヤー選択に追加したい場合は、そのまま実行すればOKです。

(2)同じ名前のレイヤーをつけないでください
  これはScripting Listenerで記録したスクリプトの都合によるものです。
  同名のレイヤー名があると、いずれか一つしか選択されません。

実際のスクリプトは、以下のようになります。テキストエディタ等で保存し、Photoshopのファイルメニュー>スクリプト>参照...で、保存したファイルを選択してください。

// 矩形選択された範囲内にある完全内包されているレイヤーを選択 Photoshop版
// 注意:レイヤーはすべて非選択にしてから実行してください
(function (){
var selObj = app.activeDocument.selection;
try{
var gb = selObj.bounds;
}catch(e){
alert("範囲を選択して下さい");
return;
}
var x1 = gb[0]|0; // 単位削除
var y1 = gb[1]|0;
var x2 = gb[2]|0;
var y2 = gb[3]|0;
// 範囲内にレイヤーがあるか調べる
checkLayerSet(app.activeDocument);

// レイヤーセット内を再起処理でチェック
function checkLayerSet(baseLayer){
// 内包されてる全てのレイヤーを調べる
var layObj = baseLayer.layers;
for(var i=0; i<layObj.length; i++){
var gb = layObj[i].bounds;
var lx1 = gb[0]|0;
var ly1 = gb[1]|0;
var lx2 = gb[2]|0;
var ly2 = gb[3]|0;
if ((lx1>=x1) && (ly1>=y1) && (lx2<=x2) && (ly2 <=y2)){
selectLayer(layObj[i].name);
}
}
var laySetObj = baseLayer.layerSets;
for(var i=0; i<laySetObj.length; i++){
checkLayerSet(laySetObj[i]);
}
}

// 指定されたレイヤーを選択(Scripting Listenerで生成したコード)
function selectLayer(LayName){
var idslct = charIDToTypeID( "slct" );
var desc = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref = new ActionReference();
ref.putName( charIDToTypeID( "Lyr " ), LayName);
desc.putReference( idnull, ref );
var idselectionModifier = stringIDToTypeID( "selectionModifier" );
var idselectionModifierType = stringIDToTypeID( "selectionModifierType" );
var idaddToSelection = stringIDToTypeID( "addToSelection" );
desc.putEnumerated( idselectionModifier, idselectionModifierType, idaddToSelection );
var idMkVs = charIDToTypeID( "MkVs" );
desc.putBoolean( idMkVs, false );
executeAction( idslct, desc, DialogModes.NO );
}
})();

上記のスクリプトは、選択範囲内に完全内包されているレイヤーが選択されますが、レイヤーの左上だけが含まれていればよいのであれば、以下のようにスクリプトを変更してください。

if ((lx1>=x1) && (ly1>=y1) && (lx2<=x2) && (ly2 <=y2)){
 ↓
if ((lx1>=x1) && (ly1>=y1) && (lx1<=x2) && (ly1 <=y2)){

また、完全内包されていないレイヤーを選択する場合は、以下のように変更してください。

if ((lx1>=x1) && (ly1>=y1) && (lx2<=x2) && (ly2 <=y2)){
 ↓
if ((lx1<x1) || (ly1<y1) || (lx2>x2) || (ly2>y2)){

上記に関連した補助的なスクリプトもついでに。以下のスクリプトは、アクティブになっているレイヤー(ひとつだけ)を矩形で選択します。

レイヤーに余計なピクセルがあるかどうかなど、チェックする場合に使えるかもしれません。また、レイヤーに枠をつけたい場合とか、文字の下にマット(映像系だと座布団)を作成する場合にも使えるかもしれません。

// アクティレイヤー(ひとつだけ)を矩形範囲選択
(function (){
var layObj = app.activeDocument.activeLayer;
var gb = layObj.bounds;
var x1 = gb[0]|0;
var y1 = gb[1]|0;
var x2 = gb[2]|0;
var y2 = gb[3]|0;
var rect = [[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
app.activeDocument.selection.select(rect);
})();

なお、複数選択されたレイヤーに対して処理したい場合は、以下のページを参考にして作ってみてください。というか、標準で複数選択されたレイヤーを取得できれば、何の問題もないのですが(最新のPhotoshopのリファレンスはチェックしてないので、もしかしたら最新版ではできるのかも……)。

https://qiita.com/k-wth/items/0268a106de993e777c24

http://nakatoji.lolipop.jp/index.php/extendscript/photoshop/ps-layer/449-2015-05-15-19-07-67


アクティブレイヤーではなく、すべてのレイヤーで矩形選択して、それらをまとめてひとつの選択範囲にしたい場合は、以下のスクリプトを使ってください。

// すべてのレイヤーを矩形範囲選択(追加)
(function (){
var layObj = app.activeDocument.layers;
for(var i=0; i<layObj.length; i++){
if(layObj[i].isBackgroundLayer){ continue; }
var gb = layObj[i].bounds;
var x1 = gb[0]|0;
var y1 = gb[1]|0;
var x2 = gb[2]|0;
var y2 = gb[3]|0;
var rect = [[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
app.activeDocument.selection.select(rect,SelectionType.EXTEND);
}
})();


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


8K/24fpsの映像をGalaxy S20で撮影していたら、どうも5分を超える映像は撮影しないでください、という警告が画面に表示されました。でも、5分でいきなり撮影が中断してしまうわけではなく、継続して撮影は可能。でも、発熱の関係でよろしくないらしい。

Galaxy S20は悪くはないんですが、可能ならファームウェア・ソフトウェアのアップデートで、高画質で録画できるようにしてほしいところ。要するに高ビットレートで撮影したいということです。

今のGalaxy S20のビットレートだと、8K映像らしく撮影するには80%を真っ青な空とか、なるべく単色でブロック圧縮しやすいものを、画面内に入れないといけません(H.265(HEVC)だとH.264の縦横2倍のサイズ最大64x64ブロックで圧縮できる)。

また、24fpsなので速く動くものには向いてないというのもあります。録画時間制約あっても高画質30fpsで撮影するモードが欲しいところ。

でも、まあそれよりも次のiPhoneが8K/30fps撮影できないと、買い換えもできない状態。本当はスマホをiPhone一台にまとめたいけど、スペック不足すぎてどうしようもありません。

それと撮影した8K映像をYouTubeにアップしてみたものの、8Kサイズで表示できるようになるまでの処理が結構長い。まあ、8Kだから仕方ないと言えば仕方ないけど、もうちょっと速く処理して欲しいところ。

●長野県塩尻市








●長野県松本市 北アルプスと街の遠景





・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/



━━━━━━━━━━━━━━━━━
編集後記(03/01)

●偏屈BOOK案内:對中如雲「司馬江漢「東海道五十三次」の真実」祥伝社 2020 
(對は対の異体字)
https://www.amazon.co.jp/exec/obidos/ASIN/4396617402/dgcrcom-22/


冒頭のカラー「東海道五十三次」図版解説120ページが圧巻である。まず見開きで右ページが司馬江漢の「京都(発)」の図版、縦型である。左ページが安藤広重の「京師(けいし)[三条大橋(着)]」の図版、横型である。

この対照スタイルで江漢、広重二人の「東海道五十三次」がすべて見られる。切れ味のいい解説が、広重の図版の上のスペースにきれいに収まっている。

わたしも平凡社の「世界名画全集 別巻 広重 東海道五十三次」(1960)を、13歳のとき親にねだって買ってもらった。60年前のこの本はすでに手元にはない。わたしの「東海道五十三次」といえば、安藤広重に決まってる。

ところが、広重は東海道を歩いておらず、司馬江漢「東海道五十三次」を元絵にしているという説がある。また、江漢「東海道五十三次」の作者は、はたして江漢その人なのか。

江漢(1747〜1818)はその生涯において、浮世絵、中国画、銅版画、油絵と次々に画風を一変させている謎の芸術家である。広重「東海道五十三次」刊行時の表題は「真景東海道五十三次続画」であった。

東海道を歩いていない広重が、なぜ「真景」と題したのか。広重「東海道五十三次」は、先行する江漢の「五十三次」へのオマージュではなかろうかと筆者は考える。

筆者は1995年に「広重『東海道五十三次』の秘密─新発見、その元絵は司馬江漢だった」を祥伝社から世に問い、論争が巻き起こった。

「広重の名作には元絵があった」「そもそも広重は東海道を歩いたことがなかった」といった見出しが新聞・雑誌を飾り、その衝撃波に筆者自身が戸惑い立ち竦んだという。美術史研究家らはおおむね沈黙を守ったが、猛烈な反論や中傷も多かった。

それから25年、筆者は続々と寄せられた賛否両論をつぶさに検証し、自然科学系の研究者、郷土史家、芸術家たちに巡り逢い、教えを乞い、研究を進めることで、江漢真筆説にゆるぎない確信を持つに至った。

「広重は世界の広重である。ルーブル美術館はじめ、ボストン美術館など世界中の著名美術館が収蔵し展示している作品が「東海道五十三次」である。だからこそ、「肉筆の元絵が55画存在する」という事実を、世界に速やかに伝えるべきだと思う」

広重の保永堂版「東海道五十三次」は横長の多色刷り版画で、江漢版は縦長の肉筆画である。陰影を施した洋画風だが、江漢自らの工夫によって調合された絵具による水彩画と判明した。

広重と大きく違うのは、京都を発して東海道を江戸に下る構成になっている。江漢の「五十三次」は、55点すべてでスケッチした地点が特定でき、1810年代の風物として矛盾する要素もないそうだ。

江漢の画面には署名と印のほかは、地名を含めて文字が何も書かれていない。江漢が「五十三次」を意識して描いた可能性は低い。広重の「東海道五十三次」に元絵があるからといって、その価値や魅力が変わることは全くない。

江漢の肉筆55図は絵の内容、絵具とも広重より古い時代の作として、まったく矛盾がない。広重が江漢のオマージュだといえる、一大傑作の浮世絵化に成功したのだ。

江漢「東海道五十三次」は、シリーズ全体にカメラオブスキャラ(説明は略)を活用した世界唯一の連続画である。というのが、筆者の見立てである。この本は定説を離れて、司馬江漢を革命的に見直している。それにしても、元絵があっても安藤広重の「東海道五十三次」のすばらしさは変わらない。(柴田)


●作業サポートアプリ『アヴェ・クラシック』続き。iOS版のレビューから。

「作業用BGM兼タイマーとしてもとても有能で、受験期には大変お世話になりました!」

「このアプリのおかげで、家でも勉強出来るようになりました。他のスマホ依存防止のアプリも色々試してきたのですが、ダントツでアヴェクラが集中できるし、やる気が出ます。」

「メロディを貯めて続きを読みたくて、計画していた以上に勉強が長引いています笑」

「勉強苦手かつ嫌いな私が1日に4時間くらい勉強するようになりました。凄いです。これは凄い。」

「タイマーとしての側面だけではなく、メンター的な面でも良い。」

続く。(hammer.mule)

iOS版
https://apps.apple.com/jp/app/id1325399668


Android版
https://play.google.com/store/apps/details?id=com.aveclassic