Boas tardes… Recorro à vossa ajuda para tenter resolver o seguinte problema…
Tenhum a aplicação que converte imagens DICOM em PNG usando uma chamada ao sistema através de Runtime. Até qqui tudo bem…
O problema é quendo tento pegar nas imagens para montar num fich pdf a aplicação não consegue carregar as imagens… embora elas estejam lá…
se tentar correr a aplicação uma segunda vez não tem qualquer problema…
Alguem me pode ajudar? O código da aplicação é o seguinte:
public static void main(String[] args) throws IOException {
//execução do programa que converte as imagens DICOM para png
DicomConverter job = new DicomConverter();
job.convert();
}
class executa extends Thread {
public void run() {
try {
Runtime.getRuntime().exec(" dicom2 -p *.dcm");
Thread.yield();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void convert(){
executa exe = new executa();
convert conv = new convert();
exe.setPriority(10);
conv.setPriority(1);
exe.start();
conv.start();
}
class convert extends Thread {
public void run() {
Document document = new Document();
int cont=0;
//contagem do numero de ficheiros .dcm na directoria
String dir = "c://convert//DICOM";
File directory = new File(dir);
String[] files = directory.list();
for (int k = 0; k < files.length; k++){
if(files[k].matches(".*dcm")){
cont++;
}
}
try {
//criação do documento .pdf
PdfWriter.getInstance(document, new FileOutputStream("c://convert//DICOM.pdf"));
// abertura do ducumento
document.open();
// inserção das imagens
for (int i=1; i<=cont; i++){
//"carrega" a imagem
Image img = Image.getInstance("teste"+i+".dcm.png");
//dimensiona para 290x227 px
img.scaleAbsolute(290,227);
//verificação da posição
int j= i%6;
//posicionamento
switch (j){
case 1: img.setAbsolutePosition(5,560);break;
case 2: img.setAbsolutePosition(300,560);break;
case 3: img.setAbsolutePosition(5,323);break;
case 4: img.setAbsolutePosition(300,323);break;
case 5: img.setAbsolutePosition(5,86);break;
case 0: img.setAbsolutePosition(300,86);break;
}
document.add(img);
//à sexta imagem acrescenta uma página
if(j==0){
document.newPage();
}
}
} catch(DocumentException de) {
System.err.println(de.getMessage());
} catch(IOException ioe) {
System.err.println(ioe.getMessage());
}
// fechar documento
document.close();
