将图片以字符串方式保存

将图片转换成字符
 
delphi的*.dfm文件
mht的文件
 
//------------------------------------------------------------------------------
//jpg转换为 txt字符串
//JpegToText('C:\1.jpg', 'C:\1.txt');
function JpegToText(jpgFileName: string; TxtFileName: string): string;
var
  FileStream: TFileStream;
  StringStream: TStringStream;
  FSize: integer;
  FileData: string;
  i: integer;
  DataStr: string;
begin
  try
    FileStream := TFileStream.Create(jpgFileName, fmOpenRead);
    StringStream := TStringStream.Create(EmptyStr);
    FSize := FileStream.Size;
    StringStream.CopyFrom(FileStream, FSize);
    FileData := StringStream.DataString;
    DataStr := EmptyStr;
    for i := 1 to Length(FileData) do
    begin
      DataStr := DataStr + InttoHex(Ord(FileData[i]), 2);
    end;
    Result := DataStr;
  finally
    freeandnil(FileStream);
    freeandnil(StringStream);
  end;
end;

//------------------------------------------------------------------------------
//TextToJpeg('C:\1.txt', 'C:\2.jpg');
function TextToJpeg(TxtFileName: string; JpegFileName: string): TPicture;
var
  buf: array of Byte;
  DataLength: Integer;
  i: Integer;
  DataStr: string;
  ByteFile: file of byte;
  tmpFileName: string;
begin
  with TStringList.Create do
  begin
    LoadFromFile(TxtFileName);
    DataStr := Text;
    Free;
  end;
  DataLength := Length(DataStr) div 2 - 1;
  SetLength(buf, DataLength);
  for i := 1 to DataLength do
  begin
    buf[i - 1] := StrToInt('$' + copy(DataStr, (i - 1) * 2 + 1, 2));
  end;
  tmpFileName := ExtractFilePath(ParamStr(0)) + 'tmp.jpg';
  AssignFile(ByteFile, tmpFileName);
  Rewrite(ByteFile);
  for i := 0 to DataLength - 1 do
  begin
    write(ByteFile, buf[i]);
  end;
  CloseFile(ByteFile);

  Result:=TPicture.Create;
  Result.LoadFromFile(tmpFileName);  //慢
  DeleteFile(tmpFileName);
end;
 
 
 
//jpg转换为 txt字符串 并保存为txt
procedure SaveJpgToTextFile(jpgFileName: string; TxtFileName: string);
begin
    with TStringList.Create do
    begin
      Text := JpegToText(jpgFileName,TxtFileName);
      SaveToFile(TxtFileName);
      Free;
    end;
end;
 
procedure SavePictureToFile(pitcture:TPicture;FileName:string);
var
    pic:TPicture;
begin
    pic:=TPicture.Create;
    pic:=pitcture;
    pic.SaveToFile(FileName);
  //  pic.Free;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  SavePictureToFile(Image1.Picture,'C:\3.jpg');
end; 
 
 
 





转载于:https://www.cnblogs.com/xe2011/p/3876026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值