由于微信分享图片要求图片大小不能超过200k,有些手机的高清屏幕截下来的图片肯定大于200k了,这个时候只能是压缩图片了,unity压缩图片的方法,直接上C#源代码:

public void WXShareImage (string imagePath, int sceneType)
    {
        byte[] fileData = File.ReadAllBytes (imagePath);

Texture2D tex = new Texture2D ((int)(Screen.width), (int)(Screen.height), TextureFormat.RGB24, true);
        tex.LoadImage (fileData);

float miniSize = Mathf.Max (tex.width, tex.height);

float scale = 1200.0f / miniSize;
        if (scale > 1.0f) {
            scale = 1.0f;
        }
        Texture2D temp = ScaleTexture (tex, (int)(tex.width * scale), (int)(tex.height * scale));
        byte[] pngData = temp.EncodeToJPG ();
        string miniImagePath = imagePath.Replace (".png", "_min.jpg");
        File.WriteAllBytes (miniImagePath, pngData);
        Destroy (tex);
        Destroy (temp);
    }

该函数的接受两个参数,一个是传过来的图片路径,第二个参数是微信分享场景的id(微信文档有)。

private Texture2D ScaleTexture (Texture2D source, int targetWidth, int 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 ();
        return result;
    }

该函数将图片压缩并返回压缩后的图片,压缩后的大小由调用者传过来。

源代码功能把最后图片转成了JPG格式,要是想转成PNG格式的话,unity有相应的方法,但是转成PNG,图片占用的内存会更大,就不能压缩成1200像素的了,要压缩的更小,这个需要注意一下。

该方法我已经测试过,没有问题,所以才上的源代码,图就不传了,反正压缩前后的图片截下来你也看不到变下了。

——Rocky

unity3D -- 压缩图片相关推荐

  1. Android 高清加载巨图方案 拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处:  http://blog.csdn.net/lmj623565791/article/details/49300989:  本文出自: ...

  2. android h5 多图上传源码,JS移动端/H5同时选择多张图片上传并使用canvas压缩图片...

    最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...

  3. idea批量修改变量快捷键mac_使用Mac自带功能批量修改图片名称、类型和压缩图片大小...

    Mac电脑自带的聚焦搜索功能已经很强大,可以快速准确的搜索电脑内的文件,但是从网上下载的文件,特别是一些图片文件都是一串数字组成的文件名,很难记忆和搜索,我们可以使用Mac自带的『自动操作』功能给图片 ...

  4. node 压缩图片_1Mb压缩成100k,图片无损压缩我选择它

    Boss有话说 Compressor 这是一款能够快速高效压缩图片的在线神器,可以在线压缩优化的格式包含 JPEG,PNG,SVG,GIF 和 WEBP 等主流的图片格式.相比之前分享的[ TinyP ...

  5. linux压缩图片脚本,说明Ubuntu压缩图片脚本批量方法

    以下就是Ubuntu压缩图片批量方法,这些Ubuntu压缩图片方法是我学了很久的心得,希望对大家有帮助.用DC拍出来的很多照片尺寸都很大,有时候我们需要缩小一下,最近google了一圈,发现了一些有用 ...

  6. jquery压缩图片插件

    imageCompress 只有图片压缩功能,比较简单 jquery.imageCompress.js 使用说明: el:为上传框 quality:压缩图片质量,单位为% onloadStart:读取 ...

  7. LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

    LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...

  8. 【问题帖】压缩图片大小至指定Kb以下

    像PS,QQ影像等都有该功能,将图片大小压缩至指定kb以下. 我也来山寨一把,到目前为止,控制图片的大小,平时的解决方案通过分辨率和质量来控制的. 假定最后压缩的大小是100kb,那么在保证不大于10 ...

  9. php后台图片压缩_php实现等比例压缩图片

    /** * desription 压缩图片 * @param sting $imgsrc 图片路径 * @param string $imgdst 压缩后保存路径 */ public function ...

最新文章

  1. 被鱼刺扎一下就没了条手臂?这种“吃人肉”的细菌身边并不罕见
  2. 安装class-dump
  3. jetson nano 摄像头购买
  4. 光流 | 基于Matlab实现Lucas-Kanade方法:方法1(附源代码)
  5. php如何制作视频特效,用PS将bmp图片制作出漂亮的动态视频效果
  6. [转载] python 生成器读取文件
  7. python中data.find_all爬取网站为空列表_利用Golang快速爬取盗版网站的整套音频
  8. 9 内存模型和名称空间
  9. win10字体显示Mac效果+Chrome字体效果增强
  10. 超级马里奥【附源码】
  11. Python 流程控制
  12. Linux系统文件加密与解密应用
  13. 为什么说用友 iuap 是更懂企业业务的数智平台?
  14. HBase--JavaAPI的操作,创建表修改表,增删改查数据
  15. QQ群裂变引流做CPA,日引500+流量
  16. 外贸用户如何创建邮箱并登录邮箱?
  17. c语言程序由一个或多个函数,一个C源程序可由一个或多个函数组成。()
  18. 机器学习:参数模型、非参数模型
  19. 【youcans 的 OpenCV 例程200篇】146. 基于灰度形态学的复杂背景图像重建
  20. vscode 代码格式化vetur

热门文章

  1. VSCode下载及安装
  2. Android攻城狮Dialog
  3. 百度架构师手把手教深度学习之心得
  4. InfluxDB添加用户认证
  5. RTP 发送PS流工具(已经开源)
  6. 精挑细选的良心APP,每款都非常惊艳
  7. 微信商城 开发的准备工作
  8. 关于“u盘打开为空,但是占用空间”的解决方法之一
  9. my.资料__2017暑假
  10. 大功率双伺服电机驱动板,包含原理图,PCB和原代码,基于STM32F4方案,支持霍尔,编码器,无感