资源简介
网上有很多BMP转Texture2d的代码,但是大多都不能用!!!这个脚本是通过读取BMP文件的字节流解析协议直接将BMP从Byte[]解析出来的算法,是解析BMP的算法,根据这个算法可以在所有平台上解析.BMP格式的图片。
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public RawImage outputImg;
byte[] file = null;
private void Start()
{
Texture2D t = ReadBmp();
outputImg.rectTransform.sizeDelta = new Vector2(t.width t.height);
outputImg.texture = t;
}
public Texture2D ReadBmp()
{
file = File.ReadAllBytes(“请将该路径修改为自己BMP图片的绝对路径“);
tagBITMAPFILEHEADER file_header = new tagBITMAPFILEHEADER();
file_header.bfType = System.Text.Encoding.Default.GetString(file 0 2);
file_header.bfSize = _4ByteToInt(0x0002);
file_header.bfReserved1 = _2ByteToInt(0x0006);
file_header.bfReserved2 = _2ByteToInt(0x0008);
file_header.bfOffBits = _4ByteToInt(0x000A);
tagBMP_INFOHEADER info_header = new tagBMP_INFOHEADER();
info_header.biSize = _4ByteToInt(0x000E);
info_header.biWidth = _4ByteToInt(0x0012);
info_header.biHeight = _4ByteToInt(0x0016);
info_header.biPlanes = _2ByteToInt(0x001A);
info_header.biBitCount = _2ByteToInt(0x001C);
info_header.biCompression = _4ByteToInt(0x001E);
info_header.biSizeImage = _4ByteToInt(0x0022);
info_header.biXPelsPerMeter = _4ByteToInt(0x0026);
info_header.biYPelsPerMeter = _4ByteToInt(0x002A);
info_header.biClrUsed = _4ByteToInt(0x002E);
info_header.biClrImportant = _4ByteToInt(0x0032);
if (info_header.biBitCount != 24)
{
Debug.LogError(“本範例只能讀取 24 bit 寬度的圖像。:“ + info_header.biBitCount);
return null;
}
Texture2D t = new Texture2D(info_header.biWidth info_header.biHeight);
// skip : 微軟規定圖片寬度 / 4 必須 等於 0
// 如果寬度無法整除 4 ,那麼必須要補 0
int skip = 0;
if (t.width * 3 % 4 != 0)
{
skip = 4 - (t.width * 3 % 4);
}
int i = 0;
for (int y = 0; y < t.height; y++)
{
for (int x = 0; x < t.width; x++)
相关资源
- Unity保存录音实际长度并分段上传服务
- AssetStudio.v0.13.25 unity引擎解包工具
- Unity Excel插件 EPPlus 3.5+4.x
- unity3d BitmapToTexture2D
- c#、unity3d实现远程视频通话源码NN视频
- unity ugui 日历demo
- Unity粒子系统升级到2018新粒子系统
- C# 心跳包服务端,客户端
- InputTouch 触摸拖拽常用unity插件
- Unity3D台球游戏源码
- Unity可用的System.Drawing.dll
- LeapMotion Unity3d C#高精度手控制支持二
- c#I18N类库适用Unity等
- Json文件一键转Excel
- UDP Messenger 1.0.unitypackage
- Dotween.unitypackage
- EventTriggerListener对UI事件的封装
- Unity IOC控制反转
- unity Debuger写日志到文件(.cs类文件)
- unity工具类帧数显示FPSCalc
- unity工具类RSA加密和解密
- unity资料:unityAttribute知识.docx
- Unity调用JS打开文件对话框
- System.Drawing.dll
- Unity3D中使用UGUI实现省市区三级联动
- 导向滤波磨皮美颜方法
- 基于unity3D串口通信程序,可以实现发
- unity通过http发送和接收数据14926
- unity贝塞尔曲线的代码和
- Unity中将一张Sprite分割成多个图片Se
评论
共有 条评论