テーブルの画像列に追加する前に、jmpスクリプトで画像タイプを変換する方法はありますか?.zipファイルにある.tifファイルがたくさんあります。次のようなスクリプトを使用して、特定の画像からテーブルにデータを読み込むことができます。
dt = New Table( "test", New Column( "Image", Expression ) );
dt << Add Rows( 1 );
za = Open( "tif_library", "zip" );
dat = za << Read( "tif_file_n.tif", Format( blob ) );
img = New Image( dat, "tiff" );
dt:Image = img;
Close( dt, Save("test.jmp", "jmp");<BR />問題は、ファイルtest.jmpが巨大であるということです。ただし、画像をtiffからjpegに変換できる場合、結果のjmpテーブルはかなり小さくなります(品質の制限に耐えることができます)。しかし、これを行うために私が見ることができる唯一の方法は、画像を.jpgファイルとして保存してから、それを読み戻すことです。
dt = New Table( "test", New Column( "Image", Expression ) );
dt << Add Rows( 1 );
za = Open( "tif_library", "zip" );
dat = za << Read( "tif_file_n.tif", Format( blob ) );
img = New Image( dat, "tiff" );
img << Save Image( "temp.jpg", "jpeg");
img1 = New Image( "temp.jpg" );
dt:Image = img1;
Close( dt, Save("test.jmp", "jmp");ファイルに書き込んで読み戻すことなく、JMPでこれを行う簡単な方法はありますか?賢者のアドバイスをありがとう!
お気づきのとおり、JMPはファイルの元のバージョンを保持することにより、画像ファイルの再圧縮を回避しようとします。 JMPが元の形式を判別できない場合、JMPはおそらくJPGではなくPNG表現を保持します。 TIFFに実際に含まれているものに応じて、PNGが必要な場合もあれば、十分な場合もあります。 次のように、中間ディスクファイルを使用せずにこれを行うことができます。
dt = New Table( "test", New Column( "Image", Expression ) );
dt << Add Rows( 1 );
// no tiff handy, but like this:
img = open("C:\Users\chales\Pictures\after.jpg","jpg");
//dt:Image = img;
img<<SCALE></SCALE>
<< getpixelsはピクセルの色の行列を返し、newimage()はそれらのピクセルから画像を作成します。 元のファイルタイプ(この場合はJPG)は繰り越されません。
PNGはロスレスの圧縮形式であり、JMPが作成するグラフ(ハードエッジ付き)などの画像に特に適しています。 JPGは、エッジが柔らかい実際のカメラ画像に適した不可逆圧縮です。 TIFFファイルは、巨大な非圧縮の生のピクセル形式を含む多くの形式を保持できます。 上記の私の例では、「after.jpg」はpngとしてはるかに大きくなった大きなカメラ画像でした。 あなたはあなたの既存のアプローチを好むかもしれません。