ciao
Vorrei sapere se ci fosse qualche funzione in C che permetta di convertire un immagine da bmp a jpg, anche usando eventualmente librerie esterne.
Grazie
ciao
Vorrei sapere se ci fosse qualche funzione in C che permetta di convertire un immagine da bmp a jpg, anche usando eventualmente librerie esterne.
Grazie
Leggi questa discussione.
Ti interessa solo codice C o vanno bene anche librerie C++?
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
Puoi dare un'occhiata alla libreria libjpeg e in particolare al file cjpeg.c (sorgenti) per un approccio "didattico" al problema; d'altra parte l'uso di librerie di più alto livello (ad esempio FreeImage) potrebbe snellirti molto il lavoro.
codice:#include <freeimage.h> /* ... */ FIBITMAP *bitmap = FreeImage_Load(FIF_BMP, "nomefile.bmp", BMP_DEFAULT); if (bitmap==NULL) { /* impossibile caricare l'immagine, gestisci l'errore */ } else { if(!FreeImage_Save(FIF_JPEG, bitmap, "nomefile.jpg", JPEG_DEFAULT)) { /* impossibile salvare l'immagine, gestisci l'errore */ } FreeImage_Unload(bitmap); }
Amaro C++, il gusto pieno dell'undefined behavior.
ok grazie mille funziona...
Prego; ciao!![]()
Amaro C++, il gusto pieno dell'undefined behavior.
ciao sono un nuovo registrato
Non riesco a capire come usare questa libreria FreeImage...ci sono un casino di file all'interno e non so cosa devo fare.
Qualcuno mi potrebbe fare un esempio?
Uso DevC++
Grazie
In questa discussione riportano i passaggi necessari per utilizzare FreeImage nell'ambiente Dev-C++.
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
Allora ...
Grazie alla discussione che mi hai linkato e al codice di MItaly il programma quantomeno parte...
Il codice è così:
//**********Codice*********//
#include <freeimage.h>
#include <stdio.h>
main(){
FIBITMAP *bitmap = FreeImage_Load(FIF_BMP, "immagine.bmp", BMP_DEFAULT);
if (bitmap==NULL)
{
printf("Errore nel caricamento\n");
}
else
{
if(!FreeImage_Save(FIF_JPEG, bitmap, "immagine.jpg", JPEG_DEFAULT))
{
printf("Errore nel salvataggio\n");
}
FreeImage_Unload(bitmap);
getchar();
}
//******FINE***************//
Solo che mi dice "Errore nel salvataggio" ...
Mi sapete dire pechè?
LA libreria l'ho linkata e la dll pure , altrimenti manco partirebbe il prog, ma perchè mi dice errore nel salvataggio?
Si ora l'immagine viene convertita
Ma se ad esempio includo la libreria windows.h per eseguire altre azioni oltre alla freeimage mi da molti errori ...
Il codice è così:
#include <freeimage.h>
#include <stdio.h>
#include <windows.h>
main(){
FIBITMAP *bitmap = FreeImage_Load(FIF_BMP, "file.bmp", BMP_DEFAULT);
if (bitmap==NULL)
{
printf("Errore nel caricamento\n");
}
if(!FreeImage_Save(FIF_JPEG, bitmap, "file2.jpg", JPEG_DEFAULT))
{
printf("Errore nel salvataggio\n");
}
FreeImage_Unload(bitmap);
getchar();
}
ERRORI:
Io ho compilato il tuo programmino e posso dirti che funziona perfettamente, ho convertito diverse bitmap (24 bit per canale, 8 bit per canale, ...) in JPEG senza problemi. Probabilmente stai cercando di convertire un file memorizzato in modo non standard.Mi sapete dire pechè?
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."