PDA

View Full Version : [C/C++] resize immagini


ianaz
23-09-2006, 08:59
salve,

non conosco molto bene ne C ne C++, ma ho bisogno di fare un programmino (non ditemi di prendere robe già fatte perché voglio proprio farlo io :)) che mi resizi le immagini inserite. Deve solo resizarle, dev'essere user friendly (quindi con interfaccia grafica).
Consigliate di farlo in C o C++?
Da dove parto? Che librerie utilizzo? Sapete darmi una via da seguire?

Grazie ;)

ianaz
23-09-2006, 16:17
up...


se si può fare con altri linguaggi illuminatemi :D
però dev'essere un eseguibile

ianaz
24-09-2006, 09:15
uppo ultima volta, sorry

giangian2
24-09-2006, 09:54
ciao,
devi utilizzare una libreria di gestione immagine, tipo http://www.codeproject.com/bitmap/cximage.asp
Ce ne sono molte in giro per internet, ma questa è l'unica che mi viene in mente... anche perchè una volta ho provato ad utilizzarla e non mi sembrava molto difficile, rispetto ad altre che erano più ostiche.
Dipende anche dal tipo di file che devi aprire, perchè non tutte le librerie che si trovano riescono ad aprire tutti i tipi di immagini.

ciaoooo

ianaz
24-09-2006, 11:14
Bella, grazie...ma non si trovano degli esempi in giro? :fagiano:

giangian2
24-09-2006, 11:18
ciao,
nel sito che ti ho seganalato puoi scaricare i sorgenti ed il programma dimostrativo, unico vincolo devi essere registrato... ma la registrazione è gratuita.
Se giri un pò nel sito che ti ho indicato ci sono anche altre librerie per fare la stessa cosa, vedi tu cosa preferisci.

ciaoooooooooooo

tomminno
24-09-2006, 14:15
Secondo me con le OpenCV della Intel fai tutto quello che ti serve e anche di più.

ianaz
24-09-2006, 14:45
Secondo me con le OpenCV della Intel fai tutto quello che ti serve e anche di più.
Grazie, proverò anche questa :)

cionci
25-09-2006, 09:36
Se non vuoi farti l'algoritmo di ridimensionamento da solo queste librerie sono ottime: http://www.boutell.com/gd/
Sono in pratica quelle usate da php...

ianaz
25-09-2006, 09:51
Se non vuoi farti l'algoritmo di ridimensionamento da solo queste librerie sono ottime: http://www.boutell.com/gd/
Sono in pratica quelle usate da php...
Ho provato a scaricarle ma non capisco come "installarle"... sono piuttosto noob in C, qualcuno mi spiega brevemente pf? :) (uso dev-cpp 5b)

cionci
25-09-2006, 10:02
Non devi installarle... Scarica questo: http://www.boutell.com/gd/http/gdwin32.zip

Nello zip c'è il file di libreria per i compilatori compatibili con GCC come Mingw32... Quindi puoi usare la libreria con Dev-C++ o Code::Blocks o qualsiasi altro... Basta che tu aggiunga tra le opzioni del linker il file libgd.a

Poi metti la directory dove hai estratto i file fra le "include dir" dell'ambiente di sviluppo...

Qui c'è un esempio di uso:
http://www.boutell.com/gd/manual2.0.33.html#basics
E qui c'è la lista delle funzioni:
http://www.boutell.com/gd/manual2.0.33.html#reference

andbin
25-09-2006, 10:07
Ho provato a scaricarle ma non capisco come "installarle"... sono piuttosto noob in C, qualcuno mi spiega brevemente pf? :) (uso dev-cpp 5b)Prova questa procedura.

Scarica il pacchetto gdwin32.zip (i file sono contenuti in una cartella gdwin32), poi nel Dev-C++ vai nella configurazione del compilatore (Options -> Compiler options) e imposta il path di include e di libreria in modo che puntino anche a quella directory gdwin32.
Poi nel tuo progetto imposta il link con libbgd.a e nel sorgente includi (credo) <gd.h>. Ultima nota: la libreria bdg.dll ovviamente deve essere in PATH.

ianaz
25-09-2006, 10:07
Non devi installarle... Scarica questo: http://www.boutell.com/gd/http/gdwin32.zip

Nello zip c'è il file di libreria per i compilatori compatibili con GCC come Mingw32... Quindi puoi usare la libreria con Dev-C++ o Code::Blocks o qualsiasi altro... Basta che tu aggiunga tra le opzioni del linker il file libgd.a

Poi metti la directory dove hai estratto i file fra le "include dir" dell'ambiente di sviluppo...

Qui c'è un esempio di uso:
http://www.boutell.com/gd/manual2.0.33.html#basics
E qui c'è la lista delle funzioni:
http://www.boutell.com/gd/manual2.0.33.html#reference
Sempre molto completo, grazie mille :D

ianaz
25-09-2006, 10:44
Ok, con questo posso modificare delle immagini in modo piuttosto semplice, ma per il resto? Parte grafica?
Vorrei ad esempio un "Sfoglia" (tipo l'input type=file)....
Ho proprio bisogno di un interfaccia grafica per l'utente "stupido" :)

Per quello che cosa utilizzo?

andbin
25-09-2006, 10:53
Ho proprio bisogno di un interfaccia grafica per l'utente "stupido" :)

Per quello che cosa utilizzo?API Win32, wxWidgets, GTK, ecc....
Quello che preferisci.

misterx
25-09-2006, 19:24
ti conviene un ambiente di sviluppo visuale per iniziare, altrimenti on ne esci più

Borland Builder C++ è un buon strumento per fare ciò che dici; poi in rete trovi montagne di componenti.

Però non so le ultime di casa Borland....supporta ancora BCB ?????

ianaz
25-09-2006, 20:22
oramai ho già iniziato a vedere Win32API quindi....continuo così :)
ho imparato molto di C solamente a iniziare sta cosa, ci sono delle cose che non ti può insegnare nessuno...
Grazie a tutti ;)

cionci
25-09-2006, 21:21
Secondo em non ti conviene...con le WinAPI ci metti una vita... Io userei GTK+ per il C e wxWidgets per il C++...

ianaz
25-09-2006, 21:24
Secondo em non ti conviene...con le WinAPI ci metti una vita... Io userei GTK+ per il C e wxWidgets per il C++...
Domani provo GTK+, meglio cambiare all'inizio prima che sia troppo tardi :sofico:

ianaz
25-09-2006, 21:27
GTK non necessita le runtime?

cionci
25-09-2006, 21:30
Sì...ma lo puoi distribuire con l'applicazione...

ianaz
26-09-2006, 06:17
Sì...ma lo puoi distribuire con l'applicazione...
e ma dev'essere una cosa veloce....proprio un applicazione che l'utente apre, fa quel che deve fare e chiude (verrebbe usato da un 300 persone ca. )...

ianaz
26-09-2006, 09:48
in effetti con ste api non é il max :(

non c'é nemmeno troppa documentazione in italiano

GTK+ però dopo dovrei distribuire anche l'altro pacchetto...non conviene...qualcosa d'altro c'é? :mc:

cionci
26-09-2006, 09:52
Non devi distribuire l'altro pacchetto...basta mettere le dll che ti servono nella dir del tuo programma...

ianaz
26-09-2006, 09:55
Non devi distribuire l'altro pacchetto...basta mettere le dll che ti servono nella dir del tuo programma...
Ah k....pensavo sbagliato :D
Sarebbe più comodo comunque un file unico...ma vabbé ^^
grazie

ianaz
26-09-2006, 10:30
Eccomi di nuovo con un problema(ora con GTK)...scusami ma sono veramente imbranato:
l'installazione
!
Con un semplice codice come questo:

#include <gtk/gtk.h>

int main( int argc, char *argv[])
{
GtkWidget *window;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);

gtk_main ();

return 0;
}

ho copiato la cartella gtk nella cartella include di dev-cpp, nella compilazione ci mette un pacco e alla fine esce:

[General Error] Too many messages; abort.
There must be something terribly wrong with your code. Please fix it.


il problema é nell' #include <gtk/gtk.h>....se metto solo quello lo fa cmq :(

ianaz
26-09-2006, 15:31
up :cry: ho provato di tutto...

cionci
26-09-2006, 16:33
Bene...funziona ?

andbin
26-09-2006, 16:43
up :cry: ho provato di tutto...Io ho fatto una prova veloce con il Dev-C++. Sono riuscito a compilare correttamente il sorgente che hai postato sopra.
Solo che ..... c'è da scaricare e spacchettare 'na marea di pacchetti!!!!

Devi prendere tutti i pacchetti 'dev':
1) glib-dev-NNN.zip
2) gtk+-dev-NNN.zip
3) pango-dev-NNN.zip
4) atk-dev-NNN.zip
5) cairo-dev-NNN.zip

Più i pacchetti di run-time che contengono le DLL (e poi metterle in PATH):
1) glib-NNN.zip
2) gtk+-NNN.zip
3) pango-NNN.zip
4) atk-NNN.zip
5) cairo-NNN.zip

Poi mettere nella configurazione globale del Dev-C++ i path di include. Ad esempio:
C:\Programmi\glib\lib\glib-2.0\include
C:\Programmi\gtk\lib\gtk-2.0\include
C:\Programmi\atk\include\atk-1.0
C:\Programmi\cairo\include
C:\Programmi\cairo\include\cairo
C:\Programmi\pango\include\pango-1.0
C:\Programmi\glib\include\glib-2.0
C:\Programmi\gtk\include\gtk-2.0

Poi i path per la lib. Ad esempio:
C:\Programmi\atk\lib
C:\Programmi\cairo\lib
C:\Programmi\pango\lib
C:\Programmi\glib\lib
C:\Programmi\gtk\lib

Poi nelle proprietà del progetto devi "tirarti" dentro tutti i file .a delle varie lib tramite il pulsante "Load object files".

A quel punto compili. Assicuro che funziona. Ma la mia prima intenzione sarebbe quella di sparare di brutto agli sviluppatori del GTK. :D (scherzo eh! non sparo a nessuno ;) )

ianaz
26-09-2006, 17:12
Ti ringrazio un casino per il tempo sprecato per me :)

A questo punto non faccio prima a installarlo col package manager che fa tutto lui? :D

edit
vedo che non va nemmeno con il package manager :asd:

domani provo come hai detto tu ^^
/edit

andbin
26-09-2006, 17:19
A questo punto non faccio prima a installarlo col package manager che fa tutto lui? :DTutta l'impostazione dei path e del progetto nel Dev-C++ devi farla comunque tu a mano.

ianaz
26-09-2006, 17:23
Mi piacerebbe sapere come hai fatto a scoprire che bisognava fare tutta quella procedura....
non é normale

cionci
26-09-2006, 19:21
Sul sito ;)

Runtime for GTK+ 2.8.20. Requires GLib 2.12, atk 1.10, Pango 1.12 and cairo 1.2. In addition, if you want to be able to load PNG, JPEG or TIFF images with gdk-pixbuf, you will need libpng and zlib, libjpeg and libtiff respectively.

ianaz
27-09-2006, 08:20
Scusa se rompo di nuovo ma ci voglio arrivare fino in fondo stavolta!

http://img99.imageshack.us/img99/3489/lib2gx3.th.jpg (http://img99.imageshack.us/my.php?image=lib2gx3.jpg)
http://img138.imageshack.us/img138/1056/libvz6.th.jpg (http://img138.imageshack.us/my.php?image=libvz6.jpg)
http://img205.imageshack.us/img205/4443/gtksv6.th.jpg (http://img205.imageshack.us/my.php?image=gtksv6.jpg)

cosa ho sbagliatooooo?!
i pacchetti di runtime non le ho trovate ma credo che almeno compilare senza 2000 errori dovrebbe...

andbin
27-09-2006, 08:37
cosa ho sbagliatooooo?!Ma hai letto il mio post sopra, quello con tutti i path??? :confused:
Perché non mi sembra che tu abbia inserito tutti i path che ho elencato io!

ianaz
27-09-2006, 09:06
Ok scusa, ora funzia ma mi mancano solo le runtime (compila tutto ma non succede niente)

dove le trovo? :stordita:

andbin
27-09-2006, 09:08
dove le trovo? :stordita:<qui> (http://www.gimp.org/~tml/gimp/win32/downloads.html)