Stoję przed teoretycznie prostym zadaniem pisząc w PyQt, o które rozbijam się już drugi dzień. Chcę otworzyć 8 bitowym plik bmp (FormatIndexed8 ?), nałożyć na niego tekst i zapisać bez zmiany parametrów (8 bit color depth i zachowane wartości kolorów). Doki niestety mówią że:
Note: Drawing into a QImage with QImage::Format
Indexed8 is not supported.
Działam z QImage i flagami z dokumentacji, jednak czego bym nie robił (zamiana na pixmap/convert na inny format QImage) kończę albo z: 4 bitowym obrazkiem / "szumem" na 8 bitowym obrazku / brakiem "szumu" ale zmienionym odcieniem kolorów
Mogę prosić o wskazówki? Mogą być w #cpp , łatwo się to przepisuje a i język zacny.
BTW Czy tylko mi się wydaje czy też PyQt stoi bardzo słabo z jakąkolwiek społecznością? Dokumentacja też dość biedna :(
@qbek: zmarnowałeś pewnie mnóstwo czasu na zadanie pytania na wykopie a tak już byś sobie napisał połowę loadera\writera formatu bmp, który jest najprostszym z możliwych formatów graficznych do modyfikacji z poziomu kodu.
Wczytuję obrazek 8 bitowy, po czym muszę go konwertować na coś co ma więcej kolorów (bo nie mogę "pisać" bo 8 bitowym via cytat z dokumentacji), następnie chciałem go zrzucić na powrót do poprzedniego formatu używając czegoś w stylu:
image.convertToFormat(QImage.Format_Indexed8) Niestety rezultat nie jest do końca dobry.
@JoeBlade: loader/writer dla obrazków są już zawarte w Qt, pisanie własnych uznałem za wynajdowanie koła na nowo. Zależy mi na możliwie czystym
@qbek: Ale wiesz, ten format jest 8-bitowy i pozwala na użycie tylko 256 kolorów, wiec jeżeli używasz większej liczby to przy zapisie powstają jakieś zmiany.
@GwnBrz: Input file to 8 bitowy bmp (użyte 6 kolorów), rysuję na nim napis (wykorzystując jeden z kolorów z tego pliku), output także ma być 8 bitowym bmp (te same kolory). Podejrzewam, że przy konwertowaniu dochodzi do zniekształceń.
@GwnBrz: Na początku kopiuję color table z oryginalnego obrazka i ustawiam je na wynikowym obrazku po konwersji na 8 bitowa bitmapę (przed samym zapisem), niestety wynikowy obrazek ma inne kolory niż powinien.
Eh, za działające rozwiązanie problemu stawiam oczywiście pizzę tudzież innego czteropaka, więc gdyby ktoś coś, to bardzo proszę tu lub w wiadomości prywatnej.
Stoję przed teoretycznie prostym zadaniem pisząc w PyQt, o które rozbijam się już drugi dzień.
Chcę otworzyć 8 bitowym plik bmp (FormatIndexed8 ?),
nałożyć na niego tekst i zapisać bez zmiany parametrów (8 bit color depth i zachowane wartości kolorów).
Doki niestety mówią że:
Indexed8 is not supported.
Działam z QImage i flagami z dokumentacji,
jednak czego bym nie robił (zamiana na pixmap/convert na inny format QImage) kończę albo z:
4 bitowym obrazkiem / "szumem" na 8 bitowym obrazku / brakiem "szumu" ale zmienionym odcieniem kolorów
Mogę prosić o wskazówki? Mogą być w #cpp , łatwo się to przepisuje a i język zacny.
BTW Czy tylko mi się wydaje czy też PyQt stoi bardzo słabo z jakąkolwiek społecznością?
Dokumentacja też dość biedna :(
#python #qt #pyqt #programowanie
Polecam zapoznanie się z budową pliku: http://www.fileformat.info/format/bmp/egff.htm
Dokładniejszy opis i przykładowy kod odczytu i zapisu znajdziesz na MSDN
Wczytuję obrazek 8 bitowy, po czym muszę go konwertować na coś co ma więcej kolorów (bo nie mogę "pisać" bo 8 bitowym via cytat z dokumentacji),
następnie chciałem go zrzucić na powrót do poprzedniego formatu używając czegoś w stylu:
image.convertToFormat(QImage.Format_Indexed8)
Niestety rezultat nie jest do końca dobry.
@JoeBlade: loader/writer dla obrazków są już zawarte w Qt, pisanie własnych uznałem za wynajdowanie koła na nowo.
Zależy mi na możliwie czystym
@qbek: ( ͡° ʖ̯ ͡°) #czepiamsie
rysuję na nim napis (wykorzystując jeden z kolorów z tego pliku),
output także ma być 8 bitowym bmp (te same kolory).
Podejrzewam, że przy konwertowaniu dochodzi do zniekształceń.
Eh, za działające rozwiązanie problemu stawiam oczywiście pizzę tudzież innego czteropaka, więc gdyby ktoś coś, to bardzo proszę tu lub w wiadomości prywatnej.