Unity图片尺寸压缩工具

    [MenuItem("Assets/图片压缩1")]
    public static void CompressTexture()
    {

        if (!(Selection.objects[0] as Texture2D)) return;
        Texture2D source = Selection.objects[0] as Texture2D;

        int targetWidth = source.width / 10;
        int targetHeight = source.height / 10;

        if (source.width == 750&&source.height == 1334)
        {
            targetWidth = 72;
            targetHeight = 128;
        }
        Debug.Log($"targetWidth = {targetWidth},targetHeight = {targetHeight}");
        Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, true);
        Color[] rpixels = result.GetPixels(0);
        float incX = ((float)1 / source.width) * ((float)source.width / targetWidth);
        float incY = ((float)1 / source.height) * ((float)source.height / targetHeight);
        for (int px = 0; px < rpixels.Length; px++)
        {
            rpixels[px] = source.GetPixelBilinear(incX * ((float)px % targetWidth), incY * ((float)Mathf.Floor(px / targetWidth)));
        }

        result.SetPixels(rpixels, 0);
        result.Apply();

  

        //保存图片
        byte[] dataBytes = result.EncodeToPNG();
        string savePath = "Assets/GameRes/src/ui/atlas/lod/" + source.name + "_lod.png";
        FileStream fileStream = File.Open(savePath, FileMode.OpenOrCreate);
        fileStream.Write(dataBytes, 0, dataBytes.Length);
        fileStream.Close();
        UnityEditor.AssetDatabase.SaveAssets();
        UnityEditor.AssetDatabase.Refresh();

    }
    [MenuItem("Assets/图片压缩2")]
    public static void CompressTexture()
    {

        if (!(Selection.objects[0] as Texture2D)) return;
        Texture2D source = Selection.objects[0] as Texture2D;
        string path = AssetDatabase.GetAssetPath(source);
        string savepath = "Assets/GameRes/src/ui/atlas/lod/" + source.name + "_lod.png";
        var image = System.Drawing.Image.FromFile(path);
        int targetWidth = source.width / 10;
        int targetHeight = source.height / 10;

        if (source.width == 750 && source.height == 1334)
        {
            targetWidth = 72;
            targetHeight = 128;
        }
        System.Drawing.Bitmap bitmap = new(image, targetWidth, targetHeight);
        bitmap.Save(savepath);
        UnityEditor.AssetDatabase.SaveAssets();
        UnityEditor.AssetDatabase.Refresh();
        AssetImporter.GetAtPath(savepath).SaveAndReimport();//图片重新导入

        UnityEditor.AssetDatabase.SaveAssets();
        UnityEditor.AssetDatabase.Refresh();
        string altasPath = "Assets/GameRes/rest/texture/ui/atlas/lodatlas.spriteatlas";
        //图集重新生成
        SpriteAtlasUtility.PackAtlases(new UnityEngine.U2D.SpriteAtlas[]{ AssetDatabase.LoadAssetAtPath<UnityEngine.U2D.SpriteAtlas>(altasPath) }, EditorUserBuildSettings.activeBuildTarget);
        AssetBundlePacker.BuildByPath(altasPath);
        UnityEditor.AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值