-
-
引入配置文件
相关代码如下:
import org.apache.commons.cli.*;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.image.ICCProfile;
import org.dcm4che3.imageio.plugins.dcm.DicomImageReadParam;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.tool.common.CLIUtils;
import org.dcm4che3.util.SafeClose;
import javax.imageio.*;
import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.FileImageOutputStream;
import javax.imageio.stream.ImageInputStream;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.MessageFormat;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.StreamSupport;
public class Dcm2JpgUtils {
private static ResourceBundle rb = ResourceBundle.getBundle("jpg-messages", Locale.getDefault());
public interface ReadImage {
BufferedImage apply(File src) throws IOException;
}
private static ReadImage readImage;
private String suffix;
private int frame = 1;
private int windowIndex;
private int voiLUTIndex;
private boolean preferWindow = true;
private float windowCenter;
private float windowWidth;
private boolean autoWindowing = true;
private boolean ignorePresentationLUTShape;
private Attributes prState;
private final ImageReader imageReader =
ImageIO.getImageReadersByFormatName("DICOM").next();
private static ImageWriter imageWriter;
private static ImageWriteParam imageWriteParam;
private int overlayActivationMask = 0xffff;
private int overlayGrayscaleValue = 0xffff;
private int overlayRGBValue = 0xffffff;
private static ICCProfile.Option iccProfile = ICCProfile.Option.none;
public void initImageWriter(String formatName, String suffix,
String clazz, String compressionType, Number quality) {
this.suffix = suffix != null ? suffix : formatName.toLowerCase();
Iterator<ImageWriter> imageWriters =
ImageIO.getImageWritersByFormatName(formatName);
if (!imageWriters.hasNext())
throw new IllegalArgumentException(
MessageFormat.format(rb.getString("formatNotSupported"),
formatName));
Iterable<ImageWriter> iterable = () -> imageWriters;
imageWriter = StreamSupport.stream(iterable.spliterator(), false)
.filter(matchClassName(clazz))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException(
MessageFormat.format(rb.getString("noSuchImageWriter"),
clazz, formatName)));
imageWriteParam = imageWriter.getDefaultWriteParam();
if (compressionType != null || quality != null) {
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
if (compressionType != null)
imageWriteParam.setCompressionType(compressionType);