C# 字节流通过转换成图片
// 需引入以下相关命名空间
// using System.IO;
// using System.Drawing;
// using System.Runtime.Serialization.Formatters.Binary;
// using System.Text;
protected void Page_Load(object sender, EventArgs e)
{
string txt = Encoding.Default.GetString(ReadFile(Server.MapPath(@"\sex.txt")));
string fmtxt = "";
string[] strs = txt.Split(new string[] { "\r\n" }, StringSplitOptions.None);
for (int i = 0; i < strs.Length - 1; i++)
{
if (strs[i].Trim().Length == 1)
{
fmtxt += "0" + strs[i].Trim().ToUpper();
}
else
{
fmtxt += strs[i].Trim().ToUpper();
}
}
Write_Txt(Server.MapPath(@"11.txt"), fmtxt);
byte[] bt = HexToByte(fmtxt);
SaveImage(Server.MapPath(@"\SexSex.jpg"), bt);
Response.Write("图片已生成!");
}
#region
/// <summary>
/// 保存图片 JPEG格式
/// </summary>
/// <param name="fileName">保存图片的路径 JPEG格式</param>
/// <param name="bt"></param>
private void SaveImage(string fileName, byte[] bt)
{
MemoryStream ms = new MemoryStream(bt); //建立内存的流
System.Drawing.Image img = System.Drawing.Image.FromStream((Stream)ms); //把内存的流转换成图片格式
img.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);// 保存图片
}
/// <summary>
/// 转换为16进制 返回 byte[]
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private byte[] HexToByte(string hexString)
{
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
/// <summary>
/// 写入文件流并保存
/// </summary>
/// <param name="FileName">保存文件的路径</param>
/// <param name="Content">内容</param>
protected void Write_Txt(string FileName, string Content)
{
Encoding code = Encoding.GetEncoding("gb2312");
string htmlfilename = FileName; //保存文件的路径
string str = Content;
StreamWriter sw = null;
{
try
{
sw = new StreamWriter(htmlfilename, false, code);
sw.Write(str);
sw.Flush();
}
catch { }
}
sw.Close();
sw.Dispose();
}
/// <summary>
/// 读取文件流 返回 byte[]
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public byte[] ReadFile(string filePath)
{
byte[] buffer;
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // 获取文件流长度
buffer = new byte[length]; // 创建byte[]数组
int count; // 实际读取的字节数
int sum = 0; // 读取的字节总数
//读取流已经到达的位置,直到方法返回0时结束
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // 下一个读取流起始位置
}
finally
{
fileStream.Close();
}
return buffer;
}
#endregion