2016-02-19 3 views
3

У меня есть изображение, сохраненное как массив байтов. Независимо от того, насколько большой размер, я хочу всегда изменять его размер до 100x100 пикселей.Измените размер байтового массива в пикселях

Я пытаюсь преобразовать массив байтов в bufferedimage, изменить размер и сохранить его обратно как bytearray. Но со следующим кодом изображения больше не отображаются на моей странице.

byte[] pict; // this array contains the image 
BufferedImage bufferedImage; 

ByteArrayInputStream bais = new ByteArrayInputStream(pict); 
try { 
    bufferedImage = ImageIO.read(bais); 
    bufferedImage = Scalr.resize(bufferedImage, 100); 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ImageIO.write(bufferedImage, "jpg", baos); 
    baos.flush(); 

    pict = baos.toByteArray(); 
    baos.close(); 

} catch (IOException e) { 
    throw new RuntimeException(e); 
} 
OutputStream o = response.getOutputStream(); 
o.write(pict); 

ответ

1

ли это так, вместо:

Image tmpImage = ImageIO.read(bais); 
Image scaled = tmpImage.getScaledInstance(100, 100, Image.SCALE_SMOOTH); 

Затем, чтобы преобразовать в массив байтов, конвертировать изображение в BufferedImage, а затем, что в массив байт:

BufferedImage buffered = ((ToolkitImage) scaled).getBufferedImage(); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(buffered, "jpg", baos); 
baos.flush(); 
pict = baos.toByteArray(); 
baos.close(); 
+0

Если Я делаю это, как мне поменять его на массив байтов. – JasSy

+0

обновлен с возможностью изменения на bytearray. –

+0

Пробовал с вашим кодом. Изображения по-прежнему не отображаются. – JasSy

Смежные вопросы