Ver Mensaje Individual
  #1  
Antiguo 12-02-2025
Chaja Chaja is offline
Miembro
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 240
Reputación: 21
Chaja Va por buen camino
Guardar Imagenes

Hola
Desde mi sistema debia guardar una foto en la tabla de stock, para luego usarla en una app que hice en el celu. Pero las imagnes las tenia referenciadas por el path, en el sistema de escritorio todo bin pero como hacia para mandarla al celu si solo tenia el path, uso los componentes de RemoteDB, en la app, lo que no tengo un servidor rest. entonces estaba con el dilema de como pasar la imagen por defecto a la tabla de stock. Hice la consulta a ChatGPT y me dio esta solucion la cual me anduvo joya y la dejo por si alguien le hace falta
Código Delphi [-]
procedure GuardarImagenPorDefecto;
var
  QueryFoto, QueryStock: TFDQuery;
  ImagenOriginal: TGraphic;
  ImagenReducida: TJPEGImage;
  Bitmap: TBitmap;
  Stream: TMemoryStream;
  RutaImagen: string;
begin
  QueryFoto := TFDQuery.Create(nil);
  QueryStock := TFDQuery.Create(nil);
  ImagenReducida := TJPEGImage.Create;
  Bitmap := TBitmap.Create;
  Stream := TMemoryStream.Create;
  try
    QueryFoto.Connection := FDConnection1;
    QueryStock.Connection := FDConnection1;
    
    // Buscar la imagen por defecto en STOCK_FOTOS
    QueryFoto.SQL.Text := 'SELECT FOTO FROM STOCK_FOTOS WHERE POR_DEFECTO = ''S''';
    QueryFoto.Open;
    
    if not QueryFoto.IsEmpty then
    begin
      RutaImagen := QueryFoto.FieldByName('FOTO').AsString;
      
      if FileExists(RutaImagen) then
      begin
        // Determinar el formato de la imagen
        if LowerCase(ExtractFileExt(RutaImagen)) = '.png' then
          ImagenOriginal := TPngImage.Create
        else
          ImagenOriginal := TJPEGImage.Create;
        
        try
          ImagenOriginal.LoadFromFile(RutaImagen);
          
          // Redimensionar la imagen a 100x100
          Bitmap.SetSize(100, 100);
          Bitmap.Canvas.StretchDraw(Rect(0, 0, 100, 100), ImagenOriginal);
          
          // Guardar como JPEG
          ImagenReducida.Assign(Bitmap);
          ImagenReducida.CompressionQuality := 80;
          ImagenReducida.SaveToStream(Stream);
          
          // Guardar en la tabla STOCK
          QueryStock.SQL.Text := 'UPDATE STOCK SET FOTO = :FOTO';
          QueryStock.ParamByName('FOTO').LoadFromStream(Stream, ftBlob);
          QueryStock.ExecSQL;
        finally
          ImagenOriginal.Free;
        end;
      end
      else
        ShowMessage('La imagen no existe: ' + RutaImagen);
    end
    else
      ShowMessage('No se encontró imagen por defecto.');
  finally
    QueryFoto.Free;
    QueryStock.Free;
    ImagenReducida.Free;
    Bitmap.Free;
    Stream.Free;
  end;
end;
y si alguien usa RemoteDB que me avise para hacer cambio de ideas.
Gracias
__________________
Luis A.Roldan (- Mar del Plata , Argentina- Te:472-4801//+54 9 223 5062169)
Responder Con Cita