procedure Hex2Png(str: string; out png: TPngObject);
var stream: TMemoryStream;
begin
if not Assigned(png) then png := TPngObject.Create;
stream := TMemoryStream.Create;
stream.SetSize(Length(str) div );
HexToBin(PChar(str), stream.Memory, stream.Size);
png.LoadFromStream(stream);
stream.Free;
end;
function Png2Hex(png: TPngObject): string;
var stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
png.SaveToStream(stream);
SetLength(Result, stream.Size * );
BinToHex(stream.Memory, PChar(Result), stream.Size);
stream.Free;
end;
function bmp2Hex(out bmp: TBitmap):string;
var stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
bmp.SaveToStream(stream);
SetLength(Result, stream.Size * );
BinToHex(stream.Memory, PChar(Result), stream.Size);
stream.Free;
end;
procedure Hex2bmp(str: string; out bmp: TBitmap);
var stream: TMemoryStream;
begin
if not Assigned(bmp) then bmp := TBitmap.Create;
stream := TMemoryStream.Create;
stream.SetSize(Length(str) div );
HexToBin(PChar(str), stream.Memory, stream.Size);
bmp.LoadFromStream(stream);
stream.Free;
end;
//十六进制字符串转入byte数组 1
function Hex2Byte(sRandomPwd:String):TByteArr;
var
Buf:TByteArr;
begin
SetLength(Buf, Length(sRandomPwd) div );
// HexToBin(PAnsiChar(sRandomPwd), @Buf[0], Length(sRandomPwd) div 2);
//HexToBin(PChar(sRandomPwd), @Buf[0], Length(sRandomPwd) div 2);
HexToBin(PAnsiChar(sRandomPwd), @Buf[], Length(sRandomPwd) div );
Result:=buf;
end;
//自定义函数,转换十六进制数为十进制数
function HexToInt(Hexa: string): LongWord;
const
ValoresHexa: array['A'..'F'] of integer = (, , , , , );
var
nDecimal: LongWord;
nIndex: byte;
begin
nDecimal := ;
Hexa := Uppercase(Hexa);
for nIndex := Length(Hexa) downto do
if Hexa[nIndex] in [''..'']
then nDecimal := nDecimal + StrToInt(Hexa[nIndex]) *
Trunc(Exp((Length(Hexa) - nIndex) * ln()))
else nDecimal := nDecimal + ValoresHexa[Hexa[nIndex]] *
Trunc(Exp((Length(Hexa) - nIndex) * ln()));
Result := nDecimal;
end;
//十六进制字符串转入byte数组 2
function Hex2Byte2(sRandomPwd:String):TByteArr;
var
Buf:TByteArr;
i:Integer;
begin
sRandomPwd := StringReplace(sRandomPwd,' ', '',[]);
if ((Length(sRandomPwd) mod ) <> ) then
begin
sRandomPwd := sRandomPwd+' ';
end;
i:= Trunc(Length(sRandomPwd)/);
SetLength(Buf,i);
for i := to Length(Buf)- do
begin
Buf[i]:=HexToInt(Copy(sRandomPwd,i*+,));
end;
Result:=Buf;
end;
//byte数组转入十六进制字符串1
function Byte2Hex(arrByte:TByteArr):string;
var stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
stream.Write(arrByte[],Length(arrbyte));
SetLength(Result, stream.Size * );
BinToHex(stream.Memory, PChar(Result), stream.Size);
stream.Free;
end;
//byte数组转入十六进制字符串2
function Byte2Hex2(arrByte:TByteArr):string;
var
i:integer;
begin
for i:= to length(arrByte)- do
begin
Result := Result + Copy( IntToHex(arrByte[i],),,)
end;
end; procedure TForm1.btnHex2PngClick(Sender: TObject);
var png: TPngObject;
begin
png := TPngObject.Create;
Hex2Png(Memo1.Text, png);
Canvas.Draw(, , png);
png.Free;
end;
procedure TForm1.btnPng2HexClick(Sender: TObject);
var png: TPngObject;
begin
png := TPngObject.Create;
png.LoadFromFile('dyc.png');
Memo1.Text := Png2Hex(png);
png.Free;
end;
procedure TForm1.btnBmp2HexClick(Sender: TObject);
var bmp: TBitmap;
begin
image1.Picture.Bitmap.SaveToFile('2.bmp');
bmp := TBitmap.Create;
bmp.LoadFromFile('2.bmp');
Memo1.Text := bmp2Hex(bmp);
bmp.Free;
end ; procedure TForm1.btnHex2BmpClick(Sender: TObject);
var bmp: tbitmap;
begin
bmp := tbitmap.Create;
Memo1.Text:=StringReplace(Memo1.Text,#,'',[]);
Memo1.Text:=StringReplace(Memo1.Text,#,'',[]);
Hex2bmp(Memo1.Lines.GetText,bmp);
Canvas.Draw(, , bmp);
bmp.Free;
end; procedure TForm1.btnByte2HexClick(Sender: TObject);
var
m:TMemoryStream;
b:TByteArr;
begin
m:=TMemoryStream.Create();
Image1.Picture.Bitmap.SaveToStream(m);
m.Position:=;
SetLength(b,m.size);
m.ReadBuffer(b[],m.Size);
Memo1.Text:=Byte2Hex2(b);//或者Memo1.Text:=Byte2Hex2(b);
end; procedure TForm1.btnHex2ByteClick(Sender: TObject);
var
m:TMemoryStream;
b:TByteArr;
bmp:TBitmap;
begin
b:=Hex2Byte2(Memo1.text);//或者Hex2Byte2(Memo1.text);
m:=TMemoryStream.Create;
m.WriteBuffer(b[],Length(b));
m.Position:=;
m.Seek(,soBeginning);
bmp:=TBitmap.Create;
bmp.LoadFromStream(m);
Canvas.Draw(,,bmp);
end;

delphi十六进制字符串hex转byte数组互相转换bmp图片的更多相关文章

  1. 十六进制字符串转化为byte数组

    工作上有这样的需求之前找了好多都不行,好不容易有个可以的赶紧留下来. 原址:http://blog.163.com/roadwalker@126/blog/static/113561841201013 ...

  2. 图片和base64编码字符串 互相转换,图片和byte数组互相转换

    图片和base64编码字符串 互相转换 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; ...

  3. Java 图片与byte数组互相转换

    //图片到byte数组 public byte[] image2byte(String path){ byte[] data = null; FileImageInputStream input = ...

  4. c# string 和 byte[]数组之间转换

    在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...

  5. 一次面试题,将 字符串 保存在 Byte 数组中

    最近在面试,遇到一个面试题 字符串 String str = "AD428C93DE" 编程实现把 str 的内容放到 Byte[6] b 的数组中,存入后并能恢复原来的字符串. ...

  6. C# 文件转byte数组,byte数组再转换文件

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  7. C# String与Byte数组的转换

    string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); byte[] byteArray = Enc ...

  8. java 实现 图片与byte 数组互相转换

    package webgate; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import ja ...

  9. c#image与byte数组的转换

    // image to byte[] Image photo = new Bitmap(selectPictureFile); System.IO.MemoryStream ms = new Syst ...

随机推荐

  1. LightOJ - 1299 - Fantasy Cricket(DP, 数学)

    链接: https://vjudge.net/problem/LightOJ-1299 题意: 考虑成,U位置的点要往后放,D位置往前放 Dp[i][j]表示处于i位置,还有j个U没有放下. s[i] ...

  2. (尚012)Vue表单数据的自动手集(表单数据提交,需要收集表单数据)

    自动收集,就是我一输入数据,就自动收集,等我点击提交按钮的时候,数据就收集好了 1.使用v-model对表单数据自动收集 1)text/textare----单行/多行输入框 2)checkbox-- ...

  3. windows错误代码摘录

    Windows API 错误代码定义在winerror.h里,当我们得到一个Error Code不知其意时,可以查阅这个文件 这里定义了绝大部分的错误,摘录翻译如下 [0]-操作成功完成. [1]-功 ...

  4. linux 环境变量的设置

    方法一: 在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”. 要让刚才的 ...

  5. linux (core dump)调试

    转自 http://www.cnblogs.com/hazir/p/linxu_core_dump.html Linux Core Dump 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内 ...

  6. Vue中的$emit组件事件运用

    话不多说上代码 vue>src>App.vue <template> <div id="app"> <!-- header --> ...

  7. Three.js中的group,obj,模型中layers层级与相机

    目录 Three.js中的group,obj,模型中layers层级与相机 layers group中的.layers.mask设置 一些设想 Three.js中的group,obj,模型中layer ...

  8. IDEA中常用快捷键

    Alt+Enter 牛掰的万能快捷键,实现接口和抽象类.导入包.异常捕获.转换lambda表达式.equals的翻转和更换访问修饰符等,无所不能.   Ctrl+D 复制当前行 Ctrl+Y 删除行 ...

  9. mint-ui 做省市选择组件

    省市的数据是动态的,其实不是动态的更好搞 <!-- 省市选择 --> <mt-popup v-model="popupVisible" position=&quo ...

  10. 震惊,hexo个人博客居然有这么方便的评论系统

    论文搞得一头火,瞎倒腾了一下,没想到几分钟给自己的博客换了个评论系统. 之前用的gitalk,需要依赖github,死活没有成功,而且评论者还需要登录github才可以评论,不好用,刚才偶然间发现va ...