首页 > 其他分享 >Unity 实现转换bmp为png

Unity 实现转换bmp为png

时间:2023-08-08 19:34:44浏览次数:36  
标签:bmp1 int bmp Bitmap width Unity new height png

.netframework的Bitmap类返回的pixel中alpha的值恒为255,因此需要自己读取对应的类。

BMP格式
https://en.wikipedia.org/wiki/BMP_file_format#Pixel_storage

参考
https://blog.csdn.net/sgs691459/article/details/111387043

实现结果

    private void ConvertBmp2Png(string path)
    {
        var fileNameList = Directory.GetFiles(path).ToList();
        var bmpFileList = fileNameList.Where(fileName => fileName.EndsWith(".bmp"));

        foreach(var bmpFileName in bmpFileList)
        {
            int width = -1;
            int height = -1;
            using (Bitmap bmp1 = new Bitmap(bmpFileName))
            {
                width = bmp1.Width;
                height = bmp1.Height;
            }


            FileStream fileStream = new FileStream(bmpFileName, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[fileStream.Length];
            fileStream.Read(buffer, 0, buffer.Length);
            Bitmap bitmap = new Bitmap(width, height);

            for (int x = 0; x< width; x++)
            {
                for(int y = 0; y < height; y++)
                {
                    Color color;
                    if (y * width + x + 57 <= buffer.Length - 1) color = Color.FromArgb(Convert.ToInt32(buffer[(y * width + x) * 4 + 57]), Convert.ToInt32(buffer[(y * width + x) * 4 + 56]), Convert.ToInt32(buffer[(y * width + x) * 4 + 55]), Convert.ToInt32(buffer[(y * width + x) * 4 + 54]));
                    else color = Color.FromArgb(0, 0, 0, 0);
                    bitmap.SetPixel(x, y, color);
                }
            }

            bitmap.Save(bmpFileName.Replace(".bmp",".png"), ImageFormat.Png);
            AssetDatabase.Refresh();
        }
    }

标签:bmp1,int,bmp,Bitmap,width,Unity,new,height,png
From: https://www.cnblogs.com/dewxin/p/17615204.html

相关文章

  • 如何用 Unity 做出一只赛博宠物(0代码新手向)
    推荐的一些学习资料unity官方文档:Unity用户手册(2019.4LTS)-Unity手册视频教程:https://www.bilibili.com/video/BV1zB4y1C7U9live2d官方文档:https://docs.live2d.com/zh-CHS/cubism-sdk-tutorials/top/https://docs.live2d.com/zh-CHS/cubism-sdk-manual/cubism-sdk-......
  • warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-comm
    问题描述在我正确地安装好mysql包之后,再安装mysql,就出现了这么一个问题:就去疯狂百度找解决问题的方法!!!问题解决经过查找资料,才发现,原来是有GPG验证检查,只需要禁止GPG验证检查就行啦!也就是在安装mysql的语句后面,加上这样一个语句:--nogpgcheck总起来就是:yum-yinstallmys......
  • 安装unity2022后启动工程提示“Unity is running as administrator.”
    问题背景:如题,最近项目更新到unity2022.3.6f1版本,在部分机器发现会不停提示“Unityisrunningasadministrator.”解决方案:同网上大多数方案雷同,采用调整uac安全级别来避免。1.搜索栏直接搜控制面板,或者win+r键入control,打开控制面板界面;2.选中“系统和安全”后,点击“更改用......
  • Unity三维数学总结
    三维向量和三角函数 三维向量向量是指一个同时具有大小和方向,且满足平行四边形法则的几何对象。向量的模po点相对于世界坐标原点的距离:po.magnitude。标准向量,归一向量,指的是将向量的模变成1,方向不变。改变后的向量:po.normalized。向量的方向求向量的方向(求向量模......
  • 四、Unity中颜色空间
    Unity中的设置通过点击菜单Edit->ProjectSettings->Player页签->OtherSettings下的Rendering部分进行修改,参数ColorSpace可以选择Gamma或Linear。当选择GammaSpace时,Unity不会做任何处理。当选择LinearSpace时,引擎的渲染流程在线性空间计算,理想情况下项目使用线性空间的贴图颜......
  • Unity用CPU上下翻转Texture2D的最优解
    将Texture2D上下翻转效率的进化史以下数据都是基于8000x4000全景图进行对比的1、最简单也是最先想到的,直接根据索引塞到另一个数组里,耗时:0.3061805秒staticColor32[]FlipColors(Color32[]originalColors,intwidth,intheight){Color32[]......
  • Unity的IUnityLinkerProcessor:深入解析与实用案例
    UnityIUnityLinkerProcessorUnityIUnityLinkerProcessor是Unity引擎中的一个接口,它允许开发者在Unity项目构建时对代码进行链接处理。这个接口可以用来优化项目构建大小,减少不必要的代码和资源,提高项目的性能和加载速度。接口定义IUnityLinkerProcessor接口定义如下:namespac......
  • [Unity]URP HLSL Shader自用模板
    Shader"URP/falushan"{Properties//着色器的输入{_BaseMap("Texture",2D)="white"{}}SubShader{Tags{"RenderType"="Opaque""RenderPipeL......
  • Unity___设计模式总结
    模板模式子类可以继承父类的方法单例模式饿汉式游戏一开始就加载privatestaticTinstance=newT();懒汉式策略模式可以参考Sort()函数或者说回调函数在使用sort()函数时,当系统无法自动排序时需要传递一个比较类或者比较函数给方法;观察者模式(事件中心)事件源(......
  • 开始学习unity
        作为一个在程序行业混了十几年的老兵,现在才接触unity,确实是有点无奈,但这次,我是整装待发,不仅是要学习unity,更是要学习unrealengine,不仅是学习上层的功能开发技术,更是要深入底层,去学习它的渲染,及最核心的技术,同时,也仅限于技术,不再追求太多的过程,就像考试一样,而不像上班......