Anomalie #42
pb bmpFileRead
50%
Description
Description:
----------------------------------------
bmpFileRead echoue à la lecture de certain bmp en niveaux de gris (au moins ceux
créés par imagemagick) (et renvoie RES_OK).
Voila un petit programme pour mettre en evidence le probleme :
<CODE>
#include <morphee/imageIO/include/morpheeImageIO.hpp>
#include <morphee/image/include/morpheeImage.hpp>
int main(int argc, char *argv[])
{
morphee::ImageInterface *img;
morphee::RES_C res_io;
std::string input_filename, output_filename;
morphee::imageIO::initImageIO();
input_filename.assign(argv1);
output_filename.assign(argv2);
res_io = morphee::imageIO::bmpFileRead(img, input_filename);
if ( (res_io!= morphee::RES_OK) || (img==NULL) ) {
std::cout << "Unable to read image" << std::endl;
return -1;
}
std::cout << "read image...OK" << std::endl;
if (morphee::imageIO::bmpFileWrite(img, output_filename)!=
morphee::RES_OK) {
std::cout << "Unable to write image" << std::endl;
return -1;
}
std::cout << "write image...Ok" << std::endl;
return 0;
}
</CODE>
#2 13/02/2008 17:43 (Tibs)
---------------------------------------------------------------------------
Change: status: "pending" -> "accepted"
Comment:
Bon le lecteur de BMP est vraiment moisi ca c sur, mais s'il renvoie un res_ok
ca vaudra le coup de regarder si y'a pas une coquille dans le code.
Accessoirement: est-ce que ce serait pas l'ecriture de bmp qui foire ? A
verifier sans doute avec le bout de code propose...
#1 13/02/2008 14:23 (jo)
---------------------------------------------------------------------------
Change: topic: "" -> "UI"
Change: solution: "" -> "?"
Change: title: "" -> "pb bmpFileRead"
Change: description: "" -> "bmpFileRead echoue à la lecture de certain bmp en niveaux de gris (au moins ceux créés par imagemagick) (et renvoie RES_OK).
Voila un petit programme pour mettre en evidence le probleme :
<CODE>
#include <morphee/imageIO/include/morpheeImageIO.hpp>
#include <morphee/image/include/morpheeImage.hpp>
int main(int argc, char *argv[])
{
morphee::ImageInterface *img;
morphee::RES_C res_io;
std::string input_filename, output_filename;
morphee::imageIO::initImageIO();
input_filename.assign(argv[1]);
output_filename.assign(argv[2]);
res_io = morphee::imageIO::bmpFileRead(img, input_filename);
if ( (res_io!= morphee::RES_OK) || (img==NULL) ) {
std::cout << "Unable to read image" << std::endl;
return -1;
}
std::cout << "read image...OK" << std::endl;
if (morphee::imageIO::bmpFileWrite(img, output_filename)!= morphee::RES_OK) {
std::cout << "Unable to write image" << std::endl;
return -1;
}
std::cout << "write image...Ok" << std::endl;
return 0;
}
</CODE>"
Updated by Ali HASSAINE almost 16 years ago
#4 comment 14/02/2008 11:58 (ali)
---------------------------------------------------------------------------
Comment:
Bon, il se trouve que le format bmp peut utiliser plusieurs types de
compression. La fonction bmpFileRead ne permet de lire que les bmp non
compressés.
Dans ReadBMPHeader, on lit bien le type de compression utilisée
dans la variable
biCompression. Mais curieusement, le bitmap est lu dans bmpFileRead
à chaque
fois comme s'il n'était pas compressé. Et ce, indépendamment de la
valeur de la
variable biCompression.
En l'occurrence, dans l'image en question, la compression utilisée est
m_BI_RLE8, et le fichier est lu comme s'il n'était pas compressé.
En attendant de développer (ou de copier de quelque part) le code
permettant de
lire les bmp avec les différents format de compression. Il faudrait
pour le
moment ajouter dans ReadBMPHeader, un test pour n'accepter que les
bmp non
compressés:
if (biCompression!=m_BI_RGB)
{
MORPHEE_REGISTER_ERROR(std::string("bmpFileRead can't read
compressed bmp
files"));
return RES_ERROR;
}
#3 14/02/2008 10:01 (ali)
---------------------------------------------------------------------------
Upload: test.bmp (Un fichier bmp qui présente ce problème.)
Updated by Serge Koudoro almost 16 years ago
- Category set to old plone Bugs
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Updated by Serge Koudoro almost 16 years ago
- Status changed from Résolu to Nouveau
- % Done changed from 100 to 50
Updated by Etienne Decencière over 15 years ago
Je ne sais pas si c'est lié, mais la lecture de l'image:
trunk/utilities/Images/Gray/antibiog.bmp
se passe mal chez moi...