[Lazarus-es] tquery insertar imagen en mysql

Rafael Bidegain r.bidegain en gmail.com
Jue Oct 1 18:40:37 CEST 2009


El día 1 de octubre de 2009 13:29, JoshyFun <joshyfun en gmail.com> escribió:
> Hello Rafael,
>
> Thursday, October 1, 2009, 5:40:23 PM, you wrote:
>
> RB> procedure TForm1.Button1Click(Sender: TObject);
> RB> begin
> RB>   Dbf1.TableLevel := 7;
> RB>   Dbf1.TableName := 'image.dbf';
> RB>   With Dbf1.FieldDefs do begin
> RB>     Add('fimage', ftBlob, 65535, True);
> RB>   End;
> RB>   Dbf1.CreateTable;
>
> RB>   Dbf1.Active := true;
> RB>   Dbf1.insert;
> RB>   dbimage1.picture.LoadFromFile('/tmp/lazarus_about_logo.xpm');
> RB>   dbf1.post;
> RB> end;
> RB> el problema lo sigo teniendo con mysql, por lo que ví los
> RB> programadores php encodean el string en base 64 antes de guardar la
> RB> imagen en la tabla y lo decodean antes de mostrar la imagen.
> RB> pasará por allí la solución ?
>
> Si el BDImage lo "rellenas" con un LoadFromFile no hay problema ya que
> el formato del gráfico se saca de la extensión del fichero. Cámbiale
> la extensión al fichero (no lo cambies de formato) y haz lo mismo,
> verás que te salta un error por que la extensión no concuerda con los
> datos contenidos. Cuando lees de un Blob no hay extensión que analizar
> y por lo tanto creo que por defecto asume que es un BMP.
eso está claro.

lo que ocurre es que tengo otro boton que hace
procedure TForm1.Button3Click(Sender: TObject);
begin
  Dbf1.Active := true;
  Dbf1.first;
end;
y ahora si, leo la imagen directamente del campo sin problemas.

>
> Lo de Base64 no suele ser necesario en los Blobs, aunque no se en los
> de MySQL (no uso por su licencia).
¿ cual es el el problema de la licencia de mysql ?, mysql se
distribuye con varias licencias dicho sea de paso. tu puedes usar la
que mejor te parezca.

>  Eso si, el Blob tiene que ser
> binario no texto.
mmm, lo extraño es que los archivos xpm son texto y en el dbf se ven bien.
quizás sea un problema para mysql (ahora estoy probando insertar con
compress(image) y recuperar con uncompress(image)

saludos

-- 
Rafael Bidegain

Ya que los cuerdos no hablan, hablará el loco.
(The Fool, Padraic Pearse)




More information about the Lazarus-es mailing list