NetBeansプラットフォームを使用してJavaでDesktopAppを作成しています。私のアプリでは、16ビット、tiff、グレースケール画像とその画像の処理を使用しました。ここで、16ビット、tiff、グレースケール画像(または16ビット画像のデータ)を使用して32ビット、tiff、グレースケール画像を作成したいのですが、Javaで16ビット画像を32ビット画像に変換するにはどうすればよいですか?
1653 次
2 に答える
0
TIFF が BufferedImage としてロードされている場合は、次の方法で縮小できます。
BufferedImage convert(BufferedImage image) {
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorModel colorModel = new ComponentColorModel(
colorSpace, false, false, Transparency.OPAQUE,
DataBuffer.TYPE_USHORT);
BufferedImageOp converter = new ColorConvertOp(colorSpace, null);
BufferedImage newImage =
converter.createCompatibleDestImage(image, colorModel);
converter.filter(image, newImage);
return newImage;
}
于 2012-12-18T12:07:45.487 に答える
0
必要なことは、イメージ プロセッサ オブジェクトを通過させてから調整することです。おそらく次のようなもの:
import java.awt.*;
import java.awt.image.*;
import ij.*;
import ij.gui.*;
import ij.measure.*;
/** converting an ImagePlus object to a different type. */
public class ImageConverter {
private ImagePlus imp;
private int type;
private static boolean doScaling = true;
/** Construct an ImageConverter based on an ImagePlus object. */
public ImageConverter(ImagePlus imp) {
this.imp = imp;
type = imp.getType();
}
/** Convert your ImagePlus to 32-bit grayscale. */
public void convertToGray32() {
if (type==ImagePlus.GRAY32)
return;
if (!(type==ImagePlus.GRAY8||type==ImagePlus.GRAY16||type==ImagePlus.COLOR_RGB))
throw new IllegalArgumentException("Unsupported conversion");
ImageProcessor ip = imp.getProcessor();
imp.trimProcessor();
Calibration cal = imp.getCalibration();
imp.setProcessor(null, ip.convertToFloat());
imp.setCalibration(cal); //update calibration
}
/** Set true to scale to 0-255 when converting short to byte or float
to byte and to 0-65535 when converting float to short. */
public static void setDoScaling(boolean scaleConversions) {
doScaling = scaleConversions;
IJ.register(ImageConverter.class);
}
/** Returns true if scaling is enabled. */
public static boolean getDoScaling() {
return doScaling;
}
}
このようにして、入力が何であれ、キャリブレーションされた画像が 32 ビットに設定されます。ただし、適切な jar をインポートすることを忘れないでください。
于 2012-12-17T09:04:41.077 に答える