[code]private void gravaImagem ( Object imagem, String nomeArquivo, String extensao, int numeroExtensao )
{
BufferedImage bufferRet = null;
String path = “c:\programa\”+nomeArquivo+"\Imagem\00"+nomeArquivo+"."+extensao+numeroExtensao;
File arquivo = new File (path);
//a função abaixo retorna o buffer com a imagem
byte imagemOrigem [] = clientBridge.getFrameData(1,1);
byte bufferRGB [] = null;
//img é uma Interface que uso para ler os atributos do banco.
int altura = img.getNumlin().intValue();
int largura = img.getNumcol().intValue();
int numSamples = img.getSamperpix().intValue();
int bitsAllocated = img.getBitall().intValue();
if (imagemOrigem != null)
{
//Se o número de samples por pixel é 1, transforma a imagem em RGB repetindo os valores
if (numSamples == 1)
{
int tamBuffer = imagemOrigem.length;
bufferRGB = new byte[largura*altura*3];
byte[] pixelData = imagemOrigem;
if (bitsAllocated == 8)
{
byte pixelValue;
for (int i=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 significativos
int j = 0;
short pixelValue;
int max = 0;
int min = 65535;
for (int i=0;i<tamBuffer;i=i+2)
{
pixelValue = (short) ((pixelData[i+1] << 8) + pixelData[i]);
int value = pixelValue;
if (value<min)
min = value;
if (value>max)
max = value;
}
double scale = 256.0/(max-min+1);
for (int i=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 2
int value = (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++;
}
}
}
else if (numSamples == 3)
bufferRGB = imagemOrigem;
}
//Convertendo o pixeldata DICOM para BufferedImage
int[] bandOffset = { 0,1,2 };
DataBuffer dataBuffer = new DataBufferByte(bufferRGB,largura*altura*3);
WritableRaster raster = Raster.createInterleavedRaster(dataBuffer,largura,altura,largura*3,3, bandOffset, null);
bufferRet = new BufferedImage(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 (IOException e) {
logger.error(e.getStackTrace());
}
}[/code]
Foi assim que resolvi, valeu a ajuda e espero que lhes ajude. Qualquer dúvida me perguntem.