PDA

Visualizza la versione completa : [c++] generare una serie di immagini (che libreria consigliate?)


mogre
12-06-2010, 20:48
devo generare una serie di immagini e salvarle sul disco, ed ognuna di queste deve avere casualmente dei cerchi, rettangoli, etc, di vari colori
e fin qui è semplice
(possibilmente generati in posizioni casuali dell'immagine e senza sovrapposizioni, boh qui magari me ne potrei uscire con qualche bounding box e qualche controllo, senza impelagarmi in cose più complesse come la tassellazione di voronoi... *_* )

la parte piu' complicata da implementare forse sono le texture da applicare alle immagini, la domanda è: Esiste qualche libreria che mi permetta di applicare le texture alle figure che genero? Comunque che librerie potrebbero essermi utili per implementare il progetto?

immagini di questo tipo:
http://czar82.altervista.org/few_006.png
http://czar82.altervista.org/few_007.png

linoma
13-06-2010, 21:53
Escludendo il disegno delle figure, dovresti riuscire con dei semplici brush, credo che ti bastino le GDI. Se vuoi salvare in PNG credo ti tocchi usare le GDI+, questo su Windows.
Grosso modo la stessa cosa con Cairo su Linux.

sebaldar
13-06-2010, 23:25
io utilizzerei gd
http://www.libgd.org/Main_Page

ciao
sergio

mogre
14-06-2010, 12:45
Originariamente inviato da linoma
Escludendo il disegno delle figure, dovresti riuscire con dei semplici brush, credo che ti bastino le GDI. Se vuoi salvare in PNG credo ti tocchi usare le GDI+, questo su Windows.
Grosso modo la stessa cosa con Cairo su Linux.

in che senso escludendo il disegno delle figure? non permettono di disegnare rettangoli e cerchi? mi sembra strano...

Comunque a livello di semplicità, tra GD e GDI+ quale consigliate?

Ho visto che le GDI+ permettono di applicare sia texture che pattern specifici (che potrebbe pure bastarmi in effetti) http://msdn.microsoft.com/en-us/library/ms536356(v=VS.85).aspx

mentre le GD (sono antecedenti delle GDI+?) permettono se non erro solo di applicare texture http://www.libgd.org/Drawing#void_gdImageSetTile.28gdImagePtr_im.2C_gdI magePtr_tile.29_.28FUNCTION.29 ma non pattern specifici credo

Allora, dato che il colore del pattern/texture che applico, come vedete dalle immagini, dipende dal colore di riempimento dell'immagine, forse meglio usare le GDI+ e i pattern, che dite? O magari con le GD posso cambiare dinamicamente colore alle texture?

Non so, sono un po' confuso :D
comunque il tempo che ho a disposizione stringe, quindi se una delle due librerie è più semplice e veloce da apprendere, preferirei quella :)


grazie e scusate se sono stato lungo e pesante :D

sebaldar
14-06-2010, 14:29
Originariamente inviato da mogre
...
comunque il tempo che ho a disposizione stringe, quindi se una delle due librerie è più semplice e veloce da apprendere, preferirei quella :)



se conosci il C e hai già manipolato immagini, in mezza giornata ti impadronisci delle gd che hanno funzioni apposite per scrivere testo nei disegni, anche ttf .

ciao
sergio

mogre
16-06-2010, 21:03
Originariamente inviato da sebaldar
se conosci il C e hai già manipolato immagini, in mezza giornata ti impadronisci delle gd che hanno funzioni apposite per scrivere testo nei disegni, anche ttf .

ciao
sergio
sto usando le gd, sembrano davvero semplici! Sono riuscito ad applicare le texture, sai mica se c'è una funzione come quella che ho elencato su delle gdi+ per applicare pattern diciamo fissi (non caricati da immagini)?

sebaldar
17-06-2010, 10:40
Originariamente inviato da mogre
sto usando le gd, sembrano davvero semplici! Sono riuscito ad applicare le texture, sai mica se c'è una funzione come quella che ho elencato su delle gdi+ per applicare pattern diciamo fissi (non caricati da immagini)?
non ti saprei dire, non mi è mai capitato di doverli usare.
Dai una occhiata al reference http://www.libgd.org/Reference
ciao
sergio

mogre
18-06-2010, 19:18
Originariamente inviato da sebaldar
non ti saprei dire, non mi è mai capitato di doverli usare.
Dai una occhiata al reference http://www.libgd.org/Reference
ciao
sergio

un altro dubbio, dato che devo generare in un ciclo, una serie di tante immagini e salvarle, sono costretto ad allocare anche i colori per ogni immagine che creo?




//ciclo di generazione delle immagini casuali
for (int k = 0; k < IMAGE_NUM; k++)
{
gdImagePtr bg;
bg = gdImageCreate(640, 480);
int red = gdImageColorAllocate(bg, 255, 0, 0);
white = gdImageColorAllocate(bg, 255, 255, 255);

//stuff...
}


non c'è un modo per dichiarare i colori una volta sola fuori dal ciclo? (il problema è che alla definizione del colore si deve specificare l'immagine di appartenenza...)

sebaldar
18-06-2010, 23:06
il colore è associato all'handle dell'immagine

mogre
19-06-2010, 13:34
Originariamente inviato da sebaldar
il colore è associato all'handle dell'immagine

quindi devo farlo ogni volta all'interno del ciclo, non ci sono artifizi quindi?
brutta storia, spero non sia molto pesante

Loading