[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