Witam,
Mam problem z zapisem wartości heksadecymalnej, zapisuje w takiej postaci:
fo.write(Integer.toHexString(255));
a edytując plik, wartość jaka tam sie zapisuje to 66
W czym leży problem?
Witam,
Mam problem z zapisem wartości heksadecymalnej, zapisuje w takiej postaci:
fo.write(Integer.toHexString(255));
a edytując plik, wartość jaka tam sie zapisuje to 66
W czym leży problem?
do bmp
chce recznie wygenerowac biały piksel. Edytując plik za pomocą hexedytora , podmieniając wartości 66 na ff , normalnie piksel jest biały, a tak jest granatowy
Rozszerzenie pliku nie ma tutaj nic do rzeczy. Zapisujesz informacje do pliku w trybie binarnym czy tekstowym? Jakim edytorem otwierasz plik?
Przykład, który podałeś jest faktycznym elementem kodu 1:1, czy tylko obrazuje to co chcesz zrobić?
No niestety wydaje mi się że w tym przypadku będziesz się musiał trochę bardziej wysilić i wysyłać jednak obiekt typu byte a nie typu string, ale nie jestem pewien, spróbuj :)
Zapisuje przez PrintWritera:
PrintWriter fo = new PrintWriter("image.bmp");
Spróbuj przy pomocy BinaryWriter.
zawartość pliku wygląda tak, że pojawia się tam te ff, ale w źródle jest 66, a właśnie chodzi mi o to aby ff było kodzie pliku
renault12 napisał(a):
chodzi mi o to aby ff było kodzie pliku
To znaczy? Szczerze powiem, że się pogubiłem. Piksel jest biały czy granatowy? W kodzie to znaczy gdzie? Jak otworzysz przez notatnik, w hexedytorze czy jak wczytujesz plik w aplikacji?
Budowa białego piksela w bmp 24 bitowej wygląda tak:
FF FF FF, a naprzykład czerwonego tak: 00 00 FF
Teraz zapisuje do pliku w ten sposób:
color[0] = (byte) (255 & 0xFF);
color[1] = (byte) ((255 >> 8) & 0xFF);
color[2] = (byte) ((255 >> 16) & 0xFF);
fo.write(color);
W edytorze hex pliku wychodzi: c3 bf 00
a otwierając go przez notatnik są krzaczki
Szczerze powiem, że już nie wiem co to może być, jeszcze zaproponuję Tobie użycie ImageIO.