Ver Mensaje Individual
  #2  
Antiguo 22-08-2025
siyei siyei is offline
Miembro
 
Registrado: may 2012
Posts: 31
Reputación: 0
siyei Va por buen camino
Para guardar una imagen como texto tienes que utilizar algún formato como Base64:

Código Delphi [-]
uses
  Classes, SysUtils, JPEG, PNGImage, Vcl.Imaging.pngimage, Soap.EncdDecd;

procedure ImagenAGuardarComoTexto(const FileName, TextoFile: string);
var
  Img: TPicture;
  Stream: TMemoryStream;
  Texto: TStringList;
  Base64Str: string;
begin
  Img := TPicture.Create;
  Stream := TMemoryStream.Create;
  Texto := TStringList.Create;
  try
    // Cargar la imagen desde archivo
    Img.LoadFromFile(FileName);

    // Guardar la imagen en un stream
    Img.Graphic.SaveToStream(Stream);
    Stream.Position := 0;

    // Convertir a Base64
    Base64Str := EncodeBase64(Stream.Memory, Stream.Size);

    // Guardar en archivo de texto
    Texto.Text := Base64Str;
    Texto.SaveToFile(TextoFile);
  finally
    Img.Free;
    Stream.Free;
    Texto.Free;
  end;
end;

Para recuperarla:

Código Delphi [-]
procedure TextoAGuardarComoImagen(const TextoFile, FileName: string);
var
  Stream: TMemoryStream;
  Texto: TStringList;
  Img: TPicture;
  Bytes: TBytes;
begin
  Stream := TMemoryStream.Create;
  Texto := TStringList.Create;
  Img := TPicture.Create;
  try
    // Cargar el texto (Base64)
    Texto.LoadFromFile(TextoFile);
    Bytes := DecodeBase64(Texto.Text);

    // Guardar los bytes en el stream
    Stream.WriteBuffer(Bytes[0], Length(Bytes));
    Stream.Position := 0;

    // Cargar la imagen desde stream
    Img.LoadFromStream(Stream);

    // Guardar la imagen en archivo
    Img.SaveToFile(FileName);
  finally
    Stream.Free;
    Texto.Free;
    Img.Free;
  end;
end;

Última edición por Casimiro Noteví fecha: 22-08-2025 a las 11:14:38. Razón: Etiquetas para código
Responder Con Cita