Charger Jpg / Gif / Bitmap et convertir en bitmap
Je dois charger une image à partir d'un fichier XML. Il n'y a pas d'information dans le fichier XML de savoir si l'image est en JPG/GIF/BMP. Après le chargement de l'image, j'ai besoin de le convertir en Bitmap.
Quelqu'un a une idée de comment convertir des images Bitmap sans connaître le véritable format de fichier? Je suis l'aide de Delphi 2007/2009
Merci.
source d'informationauteur J K Kunil
Vous devez vous connecter pour publier un commentaire.
Delphi 2009 est livré avec un support intégré pour les fichiers JPEG, BMP, GIF et PNG.
Pour les versions antérieures de Delphi, vous devrez peut-être trouver tiers des implémentations pour le PNG et le GIF, mais en Delphi 2009 vous suffit d'ajouter la
Jpeg
pngimage
etGIFImg
unités à votre clause uses.Si le fichier a une extension, vous pouvez utiliser le code suivant, comme indiqué par d'autres, la TPicture.LoadFromFile regarde les extensions enregistrées par les classes héritées de déterminer l'image à charger.
Si l'extension du fichier n'est pas connu une seule méthode est de regarder les premiers octets de déterminer le type d'image.
J'ai trouvé un moyen plus simple! Il charge JPG/GIF/BMP etc. les fichiers automatiquement, sans même le savoir/vérification du format de fichier et les convertir en conséquence. Cela a fonctionné parfaitement pour moi.
Partage ici 🙂
Vous ne pouvez pas utiliser
TPicture.LoadFromFile
si vous ne savez pas quel format le graphique a, cette méthode utilise l'extension de fichier afin de déterminer lequel des graphiques enregistrés formats qui doit être chargé. Il y a une raison pour laquelle il n'y a pas de correspondanceTPicture.LoadFromStream
méthode.Une bibliothèque externe qui peut examiner les données et de déterminer le format de graphique à l'exécution serait la meilleure solution. Vous pouvez utiliser le efg page comme un point de départ de votre recherche.
Un rapide et sale solution est d'essayer les quelques formats dont vous avez besoin pour gérer jusqu'à ce que l'on y réussit:
Edit:
La GraphicEx bibliothèque a un exemple convertir qui utilise
pour déterminer le format de graphique. Cela semble très similaire à l'VB6 façon de faire ce que vous mentionnez. Peut-être que vous pouvez utiliser cette bibliothèque pour votre but.
Je n'ai pas de Delphi 2007 ou 2009 pour voir si cela va fonctionner dans l'une de ces versions. Cependant, dans XE2, il y a une autre classe dans
Vcl.Graphics
appeléTWICImage
qui manipule des images pris en charge par le Microsoft Composant Imageriey compris BMP, GIF, ICO, JPEG, PNG, TIF et Windows Media Photo. Il est capable de détecter le type d'image à partir d'un flux. En supposant que vous avez unTImage
sur le formulaire appelé Image1:Il fonctionne sans ajout de
PNGImage
GIFImg
ouJPEG
à votreuses
déclaration.Les autres réponses montrent comment convertir le
TImage
à un BMP, donc je ne suis pas compris qu'ici. Je suis juste montrer une autre façon de charger différents types de graphiques dans unTImage
sans savoir à l'avance le type d'image, ou de l'extension de fichier...