famjerom
Messages postés15Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention13 février 2009
-
19 nov. 2006 à 19:22
famjerom
Messages postés15Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention13 février 2009
-
19 nov. 2006 à 23:56
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.
famjerom
Messages postés15Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention13 février 2009 19 nov. 2006 à 21:04
En fait c'est le composant TDBImage qui pose un problème:
Il me dit "paramètre non valide utilisé" lorsqu'il doit lire ou écrire une image bitmap 32 bits
Si j'utilise un composant tImage et que je fait la lecture écriture "à la main", ça fonctionne correctement.
famjerom
Messages postés15Date d'inscriptionmercredi 3 novembre 2004StatutMembreDernière intervention13 février 2009 19 nov. 2006 à 23:07
Je viens de la faire mais ça ne change rien.
C'est normal car si on fait ctrl C puis Ctrl V dans le controle DBImage ça appelle PasteFromClipboard.
Après des centaines d'essais, c'est bien précisément quand la commande post est exécutée avec une image arrivée dans TDBImage par copier coller qu'il y a erreur.
Pas au moment du coller.
Et même si l'image a été enregistrée dans un fichier à partir d'un TImage.loadtofile et lue par tdbimage.loadfromfile.