J'ai créé une base de donnée SQL SERVER.
Une table contient une image (type image ou varbinary) affichée à l'aide de l'objet VCL TDBImage de Delphi 2005.
Je souhaite que l'utilisateur puisse ajouter des images.
Je n'ai pas eu de problème pour charger à partir d'un fichier (transfert à l'aide de stream) de nombreux formats de fichier.
Le problème se pose pour les copier coller (depuis photoshop ou une image sur une page web).
J'obtiens "paramètre non valide utilisé" quelle que soit la méthode. Erreur qui reste quand les données sont enregistrées dans le BLOB.
J'ai fait des essais en collant directement l'image dans le contôle avec la souris, en faisant assign(clipboard), en utilisant un objet Tbitmap intermédiaire, etc
Après recherche, le problème vient du fait que l'image stockée dans le presse-papier est au format bitmap (il y a bien l'entête à $424D) 32 (ou 16) bits par pixel. Or TDBImage n'accepte que 1, 2, 8 ou 16 bits par pixel. D'ailleur Photoshop fait pareil et une image obtenue par coller et enregistrée directement sur disque par savetofile n'est pas lisible par photoshop.
J'ai voulu utiliser la propriété Pixelformat qui change le format de l'image (ca se voit, photoshop lit l'image) pour forcer à 24 bit et mettre HandleType à bmDIB mais j'ai toujours la même erreur.
Y a-t-il encore un paramètre caché à changer?
C'est TDBimage qui a un problème, Timage fonctionne correctement avec touts les formats.
PS: j'ai essayé les méthodes draw et LoadFromClipboardFormat sans succès
Même sauvegarder l'image dans un fichier ne lui fait pas perdre son caractère anti SQL SERVER.
Merci de votre aide.