czwartek, 22 października 2009

Java: tablica byte z BufferedImage

Jeśli chcemy przesłać obraz przy pomocy strumienia binarnego można odpowiednio zadziałać na strumieniu i wpisać do niego obiekt BufferedImage, ale niestety nie zawsze mamy ten luksus, że po drugiej stronie odbiorca będzie wiedział jak potraktować ten obiekt.

Jeśli konieczna jest kontrola nad sposobem pisania do binarnego strumienia, najlepiej dane wpisywać do niego w postaci tablicy byte. Tyczy się to oczywiście dowolnych danych.

Przekonwertowanie obrazu BufferedImage do postaci byte[] jest na szczęście w języku Java stosunkowo proste. Można do tego użyć poniższej funkcji lub stworzyć samodzielnie podobny kod:
private byte[] image_byte_data(BufferedImage image)
{
    WritableRaster raster = image.getRaster();
    DataBufferByte buffer = (DataBufferByte)raster.getDataBuffer();
    return buffer.getData();
}

Kod ten można znaleźć w kilku dobrych serwisach anglojęzycznych. W polskiej części sieci też się pewnie znajdzie, ale szukanie niestety nie jest takie łatwe. Ja osobiście nie umiem tworzyć ładnych zapytań dla google o polskie strony ;).

Kod pochodzi z Java Forums

Brak komentarzy:

Prześlij komentarz