hola
Por lo que comentas no dejas claro si lo que quieres es leer directamente la imagen conectándote directamente al servidor y procesar la imagen allí almacenada en el campo blob, que se plantearía con componentes de base de datos
Cita:
Empezado por jrojasmcfia
sin embargo necesito hacer lo mismo pero con imagenes almacenandas en la base de datos del servidor en este caso es una base de datos MySql y el campo es tipo blob.
|
O prentendes acceder a una URL de tu servidor que sera la encargada de servirte la imagen,
Cita:
Empezado por jrojasmcfia
Supongo que la url debe apuntar a un php que devuelva la imagen, en php ya puedo hacer la consulta de la imagen pero que tiene que devolver para que el componente indy lo entienda.
|
Si el caso es el de este segundo punto, leerlo desde una URL determinada, lo único que debes de hacer en tu servidor de PHP es mostrar la imagen como un JPG normal (que se pueda visualizar en un navegador).
Y aquí un enlace de como hacerlo:
mostrar-una-imagen-desde-blob-mysql-usando-php
Y en la parte de delphi, ya es totalmente independiente la forma en que esta almacenada en el servidor web, solamente se trata de leer una imagen almacenada en una URL.
Uno de los problemas que puedes tener es que la imagen, bien sea la recibida tanto desde el servidor como la almacenada en la BBDD, no sea un BMP que es lo que trabaja delphi de forma nativa, por lo que tienes que hacer procesos de conversión de formato
Aquí te dejo un código de ejemplo para cambiar de formato la imagen, y el ejemplo completo que lee una imagen desde una URL y determina el tipo de imagen por los caracteres de su cabecera
Código Delphi
[-]uses
Jpeg, pngimage, GIFImg;
procedure DetectImage(FS: TStream; BM: TBitmap); overload;
var
FirstBytes: AnsiString;
Graphic: TGraphic;
begin
try
Graphic := nil;
SetLength(FirstBytes, 8);
FS.Position := 0;
FS.Read(FirstBytes[1], 8);
if Copy(FirstBytes, 1, 2) = 'BM' then
Graphic := TBitmap.Create
else if FirstBytes = #137'PNG'#13#10#26#10 then
Graphic := TPngImage.Create
else if Copy(FirstBytes, 1, 3) = 'GIF' then
Graphic := TGIFImage.Create
else if Copy(FirstBytes, 1, 2) = #$FF#$D8 then
Graphic := TJPEGImage.Create;
if Assigned(Graphic) then
try
FS.Seek(0, soFromBeginning);
Graphic.LoadFromStream(FS);
BM.Assign(Graphic);
except
end;
finally
FreeAndNil(Graphic);
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
ImgStream: TMemoryStream;
url: string;
begin
url := 'https://live.staticflickr.com/2724/4362845813_d550daa427_z.jpg';
try
ImgStream := nil;
ImgStream := TMemoryStream.Create;
idhttp1.get(url, ImgStream);
DetectImage(ImgStream, image1.Picture.Bitmap);
finally
ImgStream.Free;
end;
end;