画像を切り抜いて新しい列に保存する画像をトリミングして、トリミングした画像を新しい列に保存したいと考えました。
私の最初のアプローチは次のとおりです。
for each row (:new col = :old col << crop(...))
...しかしその後、コミュニティで@Craige_Halesの投稿を見つけました。
https://community.jmp.com/t5/Discussions/Crop-a-JPG-Image/mp/442473/highlight/true#M69072
重要な情報:

そこで、私はこれを試しました:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row (:pet = :picture );
wait(0);
for each row (:pet << Crop( Left( 5 ), Right( 10 ), Top( 6 ), Bottom( 100 ) ));
...効果なし。
スクリプティング インデックスで次のものを見つけました:

img を一時変数として使用してみてはいかがでしょうか?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row( img= :picture;;img << Crop( Left( 5 ), Right( 70 ), Top( 30 ), Bottom( 50 ) );:pet = img)
そして実際:

しかし、データ テーブルをクリックすると、入力列も変更されていることに気付きました。

それで、私の最終的なスクリプトは次のようになりました。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
for each row( img= new image(:picture);img << Crop( Left( 5 ), Right( 70 ), Top( 30 ), Bottom( 50 ) );:pet = img)
- 新しい画像を作成するには新しい画像()を使用します
- この画像のサイズを変更する
- 新しい列に保存する
自動化とスクリプトRe: 画像を切り抜いて新しい列に保存する残念ながら、実際のデータセットでは、画像の一部だけが切り取られてしまいました。
簡単に説明すると、Powerpoint プレゼンテーションからコピー/貼り付けして画像列を入力しました。
すべての画像はアスペクト比が同じなので、JMP データグリッドでは同じサイズになりますが、実際のサイズは同じではありません。また、引数のピクセル値が画像の実際のサイズよりも小さい場合にのみ、切り取りが機能します。
異なるアスペクト比の画像を使用すると、検出がはるかに簡単になります (コミュニティ投稿のデモケースを作成しようとしている場合)。

Open( "$SAMPLE_DATA/SAS Offices.jmp" );
New Column( "cropped", Expression);
for each row( img= new image(:Photo);
{w, h} = img << Get Size;
img << Crop( Left( 10 ), Right( 800 ), Top( 10 ), Bottom( 70 ) );:cropped = img)
それで、私の最終的なスクリプトは次のようになりました。
Open( "$SAMPLE_DATA/SAS Offices.jmp" );
New Column( "cropped", Expression );
For Each Row(
try(img = New Image( :Photo );
{w, h} = img << Get Size;
target = 500;
img << scale( 500 / w );
{w, h} = img << Get Size;
img << Crop( Left( Round( w / 3 ) ), Right( Round( w / 3 * 2 ) ), Top( Round( h / 10 ) ), Bottom( Round( h / 5 ) ) );
:cropped = img;)
);
試してみますか? -> 画像の 1 つが欠落している場合に備えて。
Re: 画像を切り抜いて新しい列に保存するこれは難しいことではありません。
難しいのは、一枚の写真の背景を透明にして、他の写真の上に重ねるところだと思います。
JSLには画像の背景を透明にする機能はありません。
他のソフトウェアの支援によってのみ実現可能
Re: 画像を切り抜いて新しい列に保存するrun program(executable("I:\00\FastStoneIV\magick.exe"),options({目||" -fill none -fuzz 0% -draw \!"color 92,30 floodfill\!" "||标}));
