privatevoidgravaImagem(Objectimagem,StringnomeArquivo,Stringextensao,intnumeroExtensao){BufferedImagebufferRet=null;Stringpath="c:\\programa\\"+nomeArquivo+"\\Imagem\\00"+nomeArquivo+"."+extensao+numeroExtensao;Filearquivo=newFile(path);//a função abaixo retorna o buffer com a imagembyteimagemOrigem[]=clientBridge.getFrameData(1,1);bytebufferRGB[]=null;//img é uma Interface que uso para ler os atributos do banco.intaltura=img.getNumlin().intValue();intlargura=img.getNumcol().intValue();intnumSamples=img.getSamperpix().intValue();intbitsAllocated=img.getBitall().intValue();if(imagemOrigem!=null){//Se o número de samples por pixel é 1, transforma a imagem em RGB repetindo os valoresif(numSamples==1){inttamBuffer=imagemOrigem.length;bufferRGB=newbyte[largura*altura*3];byte[]pixelData=imagemOrigem;if(bitsAllocated==8){bytepixelValue;for(inti=0;i<tamBuffer;i++){pixelValue=pixelData[i];bufferRGB[i*3]=pixelValue;bufferRGB[i*3+1]=pixelValue;bufferRGB[i*3+2]=pixelValue;}}else{// Se a imagem tem mais de 8 bits copia bits mais significativosintj=0;shortpixelValue;intmax=0;intmin=65535;for(inti=0;i<tamBuffer;i=i+2){pixelValue=(short)((pixelData[i+1]<<8)+pixelData[i]);intvalue=pixelValue;if(value<min)min=value;if(value>max)max=value;}doublescale=256.0/(max-min+1);for(inti=0;i<tamBuffer;i=i+2){pixelValue=(short)((pixelData[i+1]<<8)+pixelData[i]);// Se o pixel representation é igual a 1// o valor do pixel está em complemento de 2intvalue=(pixelValue)-min;if(value<0)value=0;value=(int)(value*scale);if(value>255)value=255;bufferRGB[j*3]=(byte)value;bufferRGB[j*3+1]=(byte)value;bufferRGB[j*3+2]=(byte)value;j++;}}}elseif(numSamples==3)bufferRGB=imagemOrigem;}//Convertendo o pixeldata DICOM para BufferedImageint[]bandOffset={0,1,2};DataBufferdataBuffer=newDataBufferByte(bufferRGB,largura*altura*3);WritableRasterraster=Raster.createInterleavedRaster(dataBuffer,largura,altura,largura*3,3,bandOffset,null);bufferRet=newBufferedImage(largura,altura,BufferedImage.TYPE_INT_RGB);bufferRet.setData(raster);try{// Escrevendo imagem no formato bmp no buffer que vai ser retornado ImageIO.write(bufferRet,"bmp",arquivo);}catch(IOExceptione){logger.error(e.getStackTrace());}}
Foi assim que resolvi, valeu a ajuda e espero que lhes ajude. Qualquer dúvida me perguntem.