Skocz do zawartości

Blad


Omega

Recommended Posts

UWAGA! Musze przyznac sie do bledu. Moja biblioteka jpg.dll nie wymiata do konca pamieci :$ . Dlatego zakasuje rekawy i ja poprawiam. Jest to kwestia 2 dni (jednak tydzien i tez inne sprawy na glowie). Dodatkowo (dostalem zezwolenie od bialego) dorzuce biblioteke obslugujaca format tiff. :)

Nie wiem co mysli o tym bialy, ale mam mozliwosc dodac format:
*.png
*.pcx

Dodatkowo mam modol obslugujacy jpeg 2000. Ale w c++. Dlatego zrodla moglbym dostarczyc dla kogos, kto by sie tym zajął.

Link do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 70
  • Created
  • Ostatnia odpowiedź

Top Posters In This Topic

Przykro mi, ale nie będę miał dzisiaj wieczorem czasu, więc nie mogę wziąć udziału w spotkaniu na mIRC'u (nad czym ubolewam ;-D). Przedstawię jednak swoją wizję "mojego" modułu (chyba jak do tej pory), a biały mam nadzieję już wszystko dalej ustali. Więc zaczynając od początku:

Ja bym to widział tak:
1. Chciałbym otrzymać 2 wymiarową tablicę (tą z czcionkami - chyba od piasia?) do której odwoływał bym się tak: tablica[numer_znaku][numer_pixela] i dwie zmienne - x - ilość znaków w czcionce - czyli maksymalną wartość parametru numer_znaku, oraz ilość pixeli na znak, czyli maksymalną wartość parametru numer_pixel'a.
2. Od kogoś tam znowu (sorki, ale tak się to szybko zmienia, że nie wiem od kogo ;-D), chciałbym otrzymać HBITMAP jako uchwyt do bitmapy tylko z dwoma kolorkami (czarno - białej), która by była tym obrazkiem wybranym do konwersji(przez użytkownika), i ew. od razu jej szerokość i wysokość.

Teraz dzielił bym sobie tą bitmapę z HBITAMAP na kwadraty wielkości jednego znaku czcionki(to od piasia), i każdy kwadrat skanował tak:
1. Porównuje ile pixeli czarnych znajduje się w takich samych pozycjach na obrazku z HBITMAP jak w pierwszym znaku czcionki.
2. Analogicznie dla drugiego i pozostałych znaków czcionki.
3. Przechodzę do analizowania kolejnego kwadratu.

Jak wspomniał biały, jest to trochę brutalforce (dla każdego kwadratu było by to szerokość_w_pixelach*wysokość_w_pixelach*ilość_znaków_w_czcionce operacji porównywania), ale ponieważ będzie się to odbywało po części na tablicy (do której dostęp jest szybszy niż z GetPixel) i można by rozdzielić to na kilka wątków, mam nadzieję że czas wykonania będzie umiarkowanie niski...

Nie wiem w końcu czy to ja dostanę ten moduł, ale jeżeli tak, to będzie potrzebna "optymalizacja" jego wspólnymi siłami, ponieważ będzie to prawdopodobnie najdłużej wykonujący się i najbardziej ważny moduł programu.

Na razie program będzie zaznaczał raczej kształty brył, ale proponuję ukończyć wersję alfa naszego Konwerter'a ASCII (jeszcze trzeba dla niego wymyślić nazwę) i dopiero potem rozbudować go do np. rozpoznawania 16 odcieni szarości....

Biały, oddaję się w twoje ręce.... ;-)

Link do komentarza
Udostępnij na innych stronach

heh widze ze wsyzscy pracują na pełnych obrotach. A u mnie zastój. Niestety wszystkie opisy foramtu gif jakie dotarły w moje ręce nie oddają w 100% tego jak wygląda plik gif pod hexedytorem. Tak wiec mecze sie i szukam...jakby ktoś znalazł poprawną specyfikację to byłbym wdzięczny...narka...szukam dalej..co do obecności na Ircu to nie wiem czy jestem wymagany..teoretycznie mogłbym sie pojawić...ale nie powiedzialbym więcej niż to co napisałem...

EDIT: dobra już doszedłem o co chodzi...przegapiłem mały fragmencik i tak wyszło :)

Link do komentarza
Udostępnij na innych stronach

x - iosc znaków w czcionce. Kurde naarzie nie mam pomyslu jak sparawdzic ile jest znaków w czcionce. Ale tak sobie orientacyjnie je policzylem i widze ze np w Courier jest 222 znaków a w Courier New jest 1227.
Ja w tym momecie sie lekko pogubilem. Popatrzylem potem na te znaki powyzej 256 i widze tam ajkies dzwine krzaczki. Wiec nierozumei po co komu te dziwne krzaczki. Wedlug mnie kazda czcionka ma 256 znaków tylko ze niektore znaki poprostu sa puste i tyle. Wiec nie widze sesnu podawania ilosci znakow w czcionce.

Dalej. To ja mam rozumiec ze mam ci podoca ilosc pixeli na znak, czyli: ilosc_pixeli_na_znak = wysokosc_znaku_w_pixelach*szerkosc_znaku_w_pixelach
oraz tablice dwuwymiarowa w postaci:
tab[256][ilosc_pixeli_na_znak]
???

//edit
co do mojej czesci to za wiele czasu dzisiaj nie mialem bo cwiczylem inne rzeczy w winapi 9_9 i zrobilem tylko wyliczenie czcionek o stalej szerokosci znaków. U mnieto sa czcionki:
Terminal
Fixedsys
Courier
Courier New
Lucida Console

Dzisiaj na spotkaniu mnie nie bedzie bo chce mi sie spac :D

Link do komentarza
Udostępnij na innych stronach

Wiec nierozumei po co komu te dziwne krzaczki. Wedlug mnie kazda czcionka ma 256 znaków tylko ze niektore znaki poprostu sa puste i tyle. Wiec nie widze sesnu podawania ilosci znakow w czcionce.

Chyba możemy zostać przy 256....

Dalej. To ja mam rozumiec ze mam ci podoca ilosc pixeli na znak, czyli: ilosc_pixeli_na_znak = wysokosc_znaku_w_pixelach*szerkosc_znaku_w_pixelach

Fakt, jeżeli podasz mi wysokość i szerokość znaku, to ilość pixeli nie jest potrzebna...

oraz tablice dwuwymiarowa w postaci:
tab[256][ilosc_pixeli_na_znak]
???

Owszem. Ta tablica ma być wypełniana np. tak tab[1][numer_pixel'a] = 1 (jeżelli ma kolor czarny), a np. tab[3][numer_pixel'a] = 0 jeżeli 3 znak w czcionce, zawiera pixel o numerze numer_pixel'a w kolorze białym....

Link do komentarza
Udostępnij na innych stronach

I te pixele bede noumerowal w ten sposob ze bede najpierw zapisywal pixele od lewej z pierwszego wiersza az w dol - zeby potem nie wyszlo jakso źle :D:
1, 2, 3, 4, 5, 6, 7, 8
9,10,11,12....

A co do tablicy zz cieniami to jeszcze nad tym mysle dokladnie , ciezka sparwa -tyle mozliwosci ale mzoe cos skleje :D

Link do komentarza
Udostępnij na innych stronach

Do Intola i Piasia:
Zastanawiam się, czy dużo szybciej nie było by gdyby pixele bitmapy i czcionki były zapisane w tablicy bajtów, gdzie każdy rząd pixeli to byłby jeden bajt (czyli pixele od 1 do 8 były by zapisane w jednym bajcie, od 9 do 16 w drugim itd) wtedy porównywanie sprowadzało by się do operacji XOR na odpowiadających sobie rzędach i sprawdzenie ile w wyniku jest zer - taka jest zgodność rzędu czcionki z rzędem bitmapy. To by się dało w asemblerze zapisać i chyba byłoby szybsze.
Mam nadzieję, że nie zamotałem.

Link do komentarza
Udostępnij na innych stronach

Mam problem. Caly dzien probuje napisac funkcje pobierajaca pojedynczy pixel z bitmapy. Niestety bezskutecznie, udalo mi sie za to sprawdzic gdzie wskazuje BITMAP.bmBits, i wiecie co - gdzies, ale gdzie to nie wiem.

char *bits;

$bits = BITMAP.bmBits;

Powyzsze raczej nie przejdzie, pzatym nie moge poprawnie obliczyc pozycji pixela. A teraz najciekawsze. Jedziemy na DIB'ach, prawda? A mieszal ktos w kodzie tego kolesia? Bo ja tak i mam zle przeczucia co do tego - na DIB'ach zajmie to nam o wiele wiecej czasu. Wiem pesymista, wybaczcie, dam z siebie wszystko. Wracajac do bitow bitmapy. Powyzsze dziala, ale zapisane tak:

char *bits, byte;

bits = (BITMAP.bmBits);

byte = bits[0]; /* UWAGA */

Z tym, ze to ostatnie robi zwis applikacji - quzwa. P.S Napisze ktos program testowy, ladujacy DIB'a - cos takiego jak zrobilem dla DDB? Bez tego programiku chwilowo ugrzezlem.

P.S. Nie moge skompilowac tego programiku od Nicon'a :) Kiedy nastepne spodkanie? Narka.

Link do komentarza
Udostępnij na innych stronach

Kurka namieszałem ostro na stronie, a teraz musze to wszystko posprzątać. Przypadkowe delete i koniec świata. Tak to jest jak ostatni backup jest sprzed 1,5 roku. Moj moduł sie troszeczke opozni. Jeszcze nie wiem ile ale bede sie starał już niedługo cos zamieścic na ftp. (proponuje nowy topic zaczać bo się ciasno tu robi)

Link do komentarza
Udostępnij na innych stronach

Witam!!!
Jak wiecie ja pisze w delphi, dlatego caly modol DibHelp.c musialem przerobic na delphi, aby moc sie dostosowac do wymogow naszego projektu.
Dlatego na ftp w katalogu Twardy umiescilem przykladowego dll'a (wszystko jest spakowane zipem w LoadDib.zip wraz z opisem funkcji). Funkcja obsluguje tymczasowo tylko bitmapy (*.bmp) dla sprawdzenia czy dobrze wykonalem robote. Chodzi mi teraz o to, zeby ktos zaimplementowal ten modol wraz z funkcja w swoim programie, aby mozna bylo sprawdzic czy wszystko jest tip-top.

Chcialbym przypomniec, ze funkcja w tym module tylko laduje bitmapy na potrzeby testu.

Link do komentarza
Udostępnij na innych stronach

No brak czasu to jest mało powiedziane. Do tej pory jeszcze nie miałem wszystkich zajęć (pierwszy tydzień), ale obliczyłem, że jak tak dalej pójdzie, to będę miał do napisania średnio 2-3 programy na tydzień i to pod warunkiem, że już teraz się zabiorę.
Domyślałem się, że chociaż projekt jest mało skomplikowany i teoretycznie powinien zostać szybko skończony, to nie będzie on jedyną rzeczą, której poświęcamy czas. Dlatego też chciałem dać na niego trochę więcej czasu 2-3 tygodnie. Myślę jednak, że uda nam się to skończyć do niedzieli. Wrzucajcie tymczasem efekty swojej pracy do swoich katalogów na ftpie.
Chciałbym jeszcze powiedzieć, żebyście się nie przejmowali, że to tak wolno idzie (i tak myślę, że nie jest tak źle - jak juz pisalem, planowałem na to 3 tygodnie), to jest nasz pierwszy wspólny projekt. Jest kilka takich rzeczy, których się nie da zrobić z marszu - trzeba się najpierw douczyć(np. DIBy, konwersja obrazu, ładowanie różnych formatów...). Nie traćcie nadziei! ;-)

Link do komentarza
Udostępnij na innych stronach

No ja takze mam malo czasu ale dewie funkcje juz siedza na FTPie a co do trzeciej to nie wiem w koncu jak ja zrobic (do bailego: to jak my ustalili odnosnie tych odcieni nie wydaje mi sie dobre i mam parep omyslow wiec prosze o kontakt na GG )

No i witam po dlugije przerwie bo niem oglem sie zalogowac na forum a dzisiaj sie udalo :D

Link do komentarza
Udostępnij na innych stronach

Napisz Piasiu jakie masz pomysly odnosnie tych odcieni. Mysle, ze mozemy to przedyskutowac na forum. Proponuje tez spotkanie na irc w najblizszym czasie. Warto przedyskutowac kila kwestii i pochwalic sie co kto zrobil. To napewno podniesie morale i zmobilizuje do dalszej pracy. Co do logowania na forum to ostatnimi czasy troche bylo problemow ale juz jest OK. Ja mam 2 funkcje a trzecia w drodze.

Link do komentarza
Udostępnij na innych stronach

I'm back! Sprawdzal ktos moje smieci? Jest blad w funkcji GetPixelColor, a wlasciwie to nie wiem co to jest. Wywolywana pojedynczo nie sprawia problemow, ale seriami? To co innego, ponad to Nie jest ona zbyt szybka. Probowalem ja zastapic funkcjami z DibHelp.c, ale efekt ten sam, ba nawet MSDN nie ma na to lekarstwa. Problem jest w switch(nBpp) { /* TUTAJ */ };. Odzyskiwanie koloru z Dib'a o palecie 8 lub mniej bitow itak odbywa sie przez DC. (2 bity jeszcze mozna przyspieszyc, ale na razie trzeba sie tego pozbyc). Moze ktos napisal sprawniejszy odpowiednik GetPixelColor i podzielilby sie nim?

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Utwórz nowe...