C# 文本字节流转换成16进制 byte[],生成JPEG图片代码

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

转载于:https://www.cnblogs.com/cgw200752027/p/5385218.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值