Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: PNG-kuvan lukeminen C:llä

Sivun loppuun

msdos464 [15.09.2007 14:51:31]

#

Onko missään step-by-step ohjeita png kuvan lukemiseen C:llä? Tarkoitus olisi siis lukea png kuva, määrittää tiettyjen pikselien värejä ja piirtää pikselitasolla sen png kuvan päälle, ja tallentaa tämä uusi png kuva. Ei luulisi olevan liikaa vaadittu, muttei onnistunut GDLibillä tai libpngllä :(

GDLibissä linkkeri valitti, ettei gdImageCreateFromPngPtr funkkaria löydy (tuo mallikoodi oli täältä: http://www.libgd.org/FAQ). Linkkerille yritin kyllä tarjota bgd.lib:iä.

Libpng:n example.c oli kauhean sekava, png.h:ssa oli viittaus zlib.h:hon, jotai ei tullut paketissa. Kun paketin purki samaan kansioon png.h:n kanssa, jotain tiedostoja meni päällekkäin (mm. example.c) jne. Kun sitä yritti kääntää, tuli taas lisää virheitä.

Libpng:n example.c alkaa näin:

#if 0 /* in case someone actually tries to compile this */

Minä kun haluaisin esimerkin, joka toimisi (as in voisi kääntää).

:( Php:llä tuo kuvien lueskelu onnistuisi, mutta luultavasti C:llä saa tuon homman tehtyä paljon järkevämmin (ohjelmasta saattaa tulla melko raskas).

Eli haussa olisi esimerkkiohjelma joka avaisi kuvan, piirtäisi vaikka punaisen pisteen keskelle kuvaa ja tallentaisi sen toiseksi kuvaksi. Php:ssä tämä vaatisi vain muutaman rivin (gdlibbiä käyttäen).

Turhauttavaa kun tämmöinen perusjuttu ei onnistu vaikka ircissä kyselee kun eri käyttiksissä ja kääntäjissä pitää eri tiedostoja kopioida ympäri konetta ja asettaa uusia parametrejä ja säätää arvoja.

Legu [15.09.2007 21:05:38]

#

Googleen iskin tuollaiset hakusanat. Ensimmäisen sivun, joka löytyi, esimerkki kääntyi ja vielä jopa toimikin niin kuin pitikin.
Kyseiset kirjastot (zlib ja libpng) olin jo aikaisemmin asentanut, enkä muista siinä mitään ongelmaa olleen.

Metabolix [15.09.2007 21:24:15]

#

Juu, älä käsin kirjastoja asenna, jos vain suinkin omistat jonkin välineen, joka voi asentaa ne puolestasi. Linuxissahan tuollaisia ongelmia ei niin helposti tule, Windowsissa voi tukeutua vaikkapa Dev-C++:aan ja DevPakeihin, noista kummastakin kun on sellainenkin.

msdos464 [15.09.2007 22:06:48]

#

Dev-C++ nimenomaan on käytössä.

Hain "c read png example" niin tuli tämä: http://cr.yp.to/2004-494/libpng/libpng-1.2.5/example.c

Pitää tutustua tuohon toiseen esimerkkiin.

msdos464 [16.09.2007 13:30:28]

#

Asensin ensin zlibin devpakin, sitten libpng:n devpakin.

http://zarb.org/~gc/html/libpng.html

Tuolta kopioin tuon esimerkin ja kokeilin kääntää, tulee linkkeri erroria:

[Linker error] undefined reference to `png_sig_cmp'
[Linker error] undefined reference to `png_create_read_struct'

jne.. eli käytännössä kaikki libpng:hen liittyvät kuvat. Koodin alussa on kyllä "#include <png.h>", eikä kääntäjä valita etteikö sitä löytyisi.

Mikähän sitten avuksi?

Blaze [16.09.2007 13:40:29]

#

msdos464 kirjoitti:

tulee linkkeri erroria

Nih, et siis linkkaa mukaan tarvittavia kirjastoja. Linkkaaminenhan tapahtuu antamalla kääntäjälle vipu -lkirjaston_nimi, tässä tapauksessa siis -lpng

msdos464 kirjoitti:

Koodin alussa on kyllä "#include <png.h>"

Tämähän liittää vain headerin kääntäjälle, ei itse kirjastoa linkkerille.

moptim [16.09.2007 13:42:38]

#

Hmm, ooks linkkeröiny sen systeemis libpng:n kans yhteen?

msdos464 [16.09.2007 14:01:19]

#

moptim kirjoitti:

Hmm, ooks linkkeröiny sen systeemis libpng:n kans yhteen?

Öh.. en :( Nyt kääntyi, kiitoksia.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta