Unity:支持base64转Image和自定义生成文本图片

1、支持base64转Image
/// <summary>
/// base64转Image
/// </summary>
/// <param name="filePath"></param>
/// <param name="imageBase64"></param>
public static void GetImageByBase64(string filePath, string imageBase64)
{
  try
  {
      byte[] arr2 = Convert.FromBase64String(imageBase64);
      using (MemoryStream ms2 = new MemoryStream(arr2))
      {
          Bitmap bmp2 = new Bitmap(ms2);

          //这里复制一份对图像进行保存,否则会出现“GDI+ 中发生一般性错误”的错误提示
          Bitmap bmpNew = new Bitmap(bmp2);
          ms2.Close();
          bmpNew.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
          bmpNew.Dispose();
          bmp2.Dispose();
          
      }
  }
  catch(Exception e)
  {
      Debug.LogError("GetImageByBase64:" + e.ToString());
  }          
}
2、支持自定义生成文本图片
/// <summary>
/// 创建文本图片
/// </summary>
/// <param name="filePath"></param>
/// <param name="text"></param>
public static void CreateTextImage(string filePath, string text)
{
    try
    {
        System.Drawing.Font font = new System.Drawing.Font("宋体", 14);
        Bitmap bmpNew = TextToBitmap(text, font, Rectangle.Empty,
             System.Drawing.Color.Black, System.Drawing.Color.FromArgb(0, System.Drawing.Color.White));
        bmpNew.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
        bmpNew.Dispose();
    }
    catch (Exception e)
    {
        Debug.LogError("CreateTextImage:" + e.ToString());
    }
}

文字转换Bitmap

/// <summary>
/// 把文字转换才Bitmap
/// </summary>
/// <param name="text"></param>
/// <param name="font"></param>
/// <param name="rect">用于输出的矩形,文字在这个矩形内显示,为空时自动计算</param>
/// <param name="fontcolor">字体颜色</param>
/// <param name="backColor">背景颜色</param>
/// <returns></returns>
private static Bitmap TextToBitmap(string text, System.Drawing.Font font, Rectangle rect
, System.Drawing.Color fontcolor
, System.Drawing.Color backColor)
{
    Graphics g;
    Bitmap bmp;
    StringFormat format = new StringFormat(StringFormatFlags.NoClip);
    if (rect == Rectangle.Empty)
    {
        bmp = new Bitmap(1, 1);
        g = Graphics.FromImage(bmp);
        //计算绘制文字所需的区域大小(根据宽度计算长度),重新创建矩形区域绘图
        SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);

        int width = (int)(sizef.Width + 1);
        int height = (int)(sizef.Height + 1);
        rect = new Rectangle(0, 0, width, height);
        bmp.Dispose();

        bmp = new Bitmap(width, height);
    }
    else
    {
        bmp = new Bitmap(rect.Width, rect.Height);
    }

    g = Graphics.FromImage(bmp);

    //使用ClearType字体功能
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
    g.FillRectangle(new SolidBrush(backColor), rect);
    g.DrawString(text, font, Brushes.Black, rect, format);
    return bmp;
}
3、调用函数demo

生成透明背景的图片,可以自定义图片格式。

private void main()
{
	string strText = "到此一游";
	string path = "d:\\image.png";
	CreateTextImage(path, strText);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity中将MP3文件换为Base64格式可以通过以下步骤实现: 首先,您需要在Unity中导入您的MP3文件。将MP3文件拖放到Unity项目资源文件夹中,确保它们正确地出现在资源面板中。 接下来,您需要使用Unity的API来读取MP3文件的二进制数据。使用`File.ReadAllBytes`函数来读取MP3文件的二进制数据,并将其存储在一个字节数组变量中。 然后,您可以使用Base64编码器将字节数组换为Base64字符串。Unity内置了一个`System.Convert.ToBase64String`函数,可以直接将字节数组换为Base64字符串。 最后,您可以使用生成Base64字符串来进一步处理。您可以将其保存到文件中,将其发送到服务器或其他需要Base64格式的地方。 以下是一个示例代码,演示如何在Unity中进行MP3到Base64换: ```csharp using System; using System.IO; using UnityEngine; public class MP3ToBase64Converter : MonoBehaviour { public string mp3FilePath; // MP3文件的路径 void Start() { // 读取MP3文件的二进制数据 byte[] mp3Bytes = File.ReadAllBytes(mp3FilePath); // 将二进制数据换为Base64字符串 string base64String = Convert.ToBase64String(mp3Bytes); // 在控制台输出Base64字符串 Debug.Log(base64String); } } ``` 确保在代码中将mp3FilePath变量设置为您实际的MP3文件路径。运行项目后,在控制台中,您将看到MP3文件的Base64字符串表示形式。 请注意,这只是将MP3换为Base64的简单示例。您可以根据您的实际需求进一步修改代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾荒的小海螺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值