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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM