有没有办法在将 jmp 脚本中的图像类型添加到表中的图像列之前转换它?我有一堆 .tif 文件,它们位于 .zip 文件中。我可以使用如下脚本将特定图像中的数据读入表中:
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 可能会保留 PNG 表示而不是 JPG。 根据 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>
<
PNG 是一种无损压缩格式,特别适用于 JMP 创建的图形(带有硬边)等图像。 JPG 是一种有损压缩,适用于边缘较柔和的真实世界相机图像。 TIFF 文件可以保存多种格式,包括巨大的未压缩原始像素格式。 在我上面的示例中,“after.jpg”是一张较大的相机图片,比 png 大得多。 您可能更喜欢现有的方法。