二进制文件转成文本保存,并可以读回
来源:互联网 发布:c语言精品课程 编辑:程序博客网 时间:2024/06/11 02:33
以 JPEG 图片为例,以下代码演示了如何将一个 JPEG 图片保存为纯文本形式,并将其以图片形式读回并显示。
保存 TXT:
function TForm1.JpegToText(AFileName:string; SaveFile: Boolean; TxtFileName: string): string;
var
FileStream : TFileStream;
StringStream : TStringStream;
FSize : integer;
FileData : string;
i : integer;
DataStr : string;
begin
try
FileStream := TFileStream.Create(OpenDialog1.FileName, 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;
if SaveFile then
begin
with TStringList.Create do
begin
Text := DataStr;
SaveToFile(TxtFileName);
Free;
end;
end;
finally
freeandnil(FileStream);
freeandnil(StringStream);
end;
end;
从 TXT 读回 JPEG:
function TForm1.TextToJpeg(AFileName: string; SaveFile: Boolean; JpegFileName: string): TJPEGImage;
var
buf : array of Byte;
DataLength : Integer;
i : Integer;
DataStr : string;
ByteFile : file of byte;
jpg : TJPEGImage;
tmpFileName: string;
begin
with TStringList.Create do
begin
LoadFromFile(AFileName);
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 := TJPEGImage.Create;
Result.LoadFromFile(tmpFileName);
if SaveFile then
Result.SaveToFile(JpegFileName);
DeleteFile(tmpFileName);
end;
- 二进制文件转成文本保存,并可以读回
- 利用inputstream读取二进制文件,并转成outputstream:
- ifStream读取ANSI/Unicode/Utf8文本保存到string里并转成gbk编码
- 二进制文件的读取并保存为文本文件
- bash如何读文本并保存到变量
- c#多图image压缩并保存为同一个二进制文件
- C++读取二进制文件到二维数组并保存到文本文件
- Opencv: 彩色图像转成灰度图像并保存
- 读取到的bitmap,转成buffer并保存
- 下载/保存/读取 文件,并转成流输出
- logcat 信息捕捉并保存为文本
- 文本文件保存为二进制文件
- MongoDB保存二进制文件
- 在ORACLE中可以使用LONG类型保存大文本
- 如何实现彩信保存文本用电子书可以正常打开
- 用python提取caffemodel网络参数并保存为二进制文件.bat
- 计算1到100的平方根,并将结果保存到二进制文件root.dat中
- 计算1000到1的平方根,并将结果保存至二进制文件root.dat.
- Memory Management Functions
- dotnet free UI controls telerik?
- SQL关系除法的思考
- dll Release与使用
- 正则相关
- 二进制文件转成文本保存,并可以读回
- 新征程
- setTimeout与setInterval在不同浏览器下的差异
- 用json格式返回自定义对象。(jQuery asp.net)
- 阐述返回JSON数据的使用说明介绍
- Linux虚拟机无法联网的终极解决办法
- 用峰谷理论指导人生
- 为什么微博客系统都是用的php做的
- 另类方法破解zip等压缩文件