테이블의 이미지 열에 이미지 형식을 추가하기 전에 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 파일이 매우 크다는 것입니다. 그러나 이미지를 jiff에서 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보다 훨씬 큰 대형 카메라 사진이었습니다. 기존 접근법을 선호 할 수도 있습니다.