Unity使用LoadImage 读取byte[]图片时,会出现白边问题
直接上代码
/// <summary>
/// 修复图片导入时白边问题
/// </summary>
/// <param name="texture"></param>
public static void FixTransparency(this Texture2D texture)
{
Color32[] pixels = texture.GetPixels32();
int w = texture.width;
int h = texture.height; for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int idx = y * w + x;
Color32 pixel = pixels[idx];
if (pixel.a == 0) {
bool done = false;
if (!done && x > 0) done = TryAdjacent(ref pixel, pixels[idx - 1]); // Left pixel
if (!done && x < w-1) done = TryAdjacent(ref pixel, pixels[idx + 1]); // Right pixel
if (!done && y > 0) done = TryAdjacent(ref pixel, pixels[idx - w]); // Top pixel
if (!done && y < h-1) done = TryAdjacent(ref pixel, pixels[idx + w]); // Bottom pixel
pixels[idx] = pixel;
}
}
} texture.SetPixels32(pixels);
texture.Apply();
} private static bool TryAdjacent(ref Color32 pixel, Color32 adjacent)
{
if (adjacent.a == 0) return false; pixel.r = adjacent.r;
pixel.g = adjacent.g;
pixel.b = adjacent.b;
return true;
}
在Unity Answers中发现了一个大牛写的png文件会有白边的原因分析,Messy Alpha Problem,大概是因为PhotoShop中,会把100% Transparent的地方默认颜色值设为白色,这样会导致在Runtime时,做图片interpolation运算时候,由于这样100%Transparent点的干扰使用会出现白边的情况,大牛提出的解决方法是,在PS中,利用插件为这些100%Transparent点,填充上相邻像素点的颜色,而由于我们的图片资源太多了,让美术一个一个改图片也不现实,所以参考了一段Google上的代码,通过代码来完成了PS中插线的工作流程.PNG transparency has white border/halo,在这个问题中有这段代码.至此问题基本解决,但是貌似性能消耗太多
参考链接:https://www.cnblogs.com/luckisnow/p/4642467.html
Unity使用LoadImage 读取byte[]图片时,会出现白边问题的更多相关文章
- 图片_ _Android有效解决加载大图片时内存溢出的问题 2
Android有效解决加载大图片时内存溢出的问题 博客分类: Android Android游戏虚拟机算法JNI 尽量不要使用setImageBitmap或 setImageResource或 Bit ...
- C#从SQL server数据库中读取l图片和存入图片
原文:C#从SQL server数据库中读取l图片和存入图片 本实例主要介绍如何将图片存入数据库.将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStr ...
- FileReader:读取本地图片文件并显示
最近忙得比狗还惨,导致长时间没能更新文章,真心对不住啊.抽空整理了下关于在页面上读取和显示本地图片的实例文章,本文通过实例讲解如何使用支持FileReader浏览器的用户将能够通过一个file inp ...
- 关于生成缩略图及水印图片时出现GDI+中发生一般性错误解决方法
System.Drawing.Image OldImage = null; oldImage = System.Drawing.Image.FromFile(ImageUrl); 使用该方法读取图片时 ...
- ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法
偶原来的用ASP.NET生成验证码图片时用的是JPG格式,今天想把它改成PNG格式的,结果就出现GDI+一般性错误,查了N久资料,才发现解决的办法,对分享此解决办法的网友深表感谢 Response.C ...
- Android开发中如何解决加载大图片时内存溢出的问题
Android开发中如何解决加载大图片时内存溢出的问题 在Android开发过程中,我们经常会遇到加载的图片过大导致内存溢出的问题,其实类似这样的问题已经屡见不鲜了,下面将一些好的解决方案分享给 ...
- 网页中通过js修改img的src属性刷新图片时,图片缓存问题现象表述及问题解决【ps:引用大神案例http://blog.csdn.net/goodleiwei/article/details/50737548】
问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过fir ...
- java读取网页图片路径并下载到本地
java读取网页图片路径并下载到本地 最近公司需要爬取一些网页上的数据,自己就简单的写了一个demo,其中有一些数据是图片,需要下载下来到本地并且 将图片的路径保存到数据库,示例代码如下: packa ...
- 使用Thumbnailator处理gif图片时遇到java.lang.ArrayIndexOutOfBoundsException: 4096异常处理
环境 1.7.0_80 在使用Thumbnailator处理gif图片时,遇到问题: Exception in thread "main" java.lang.ArrayIndex ...
- 使用Volley缓存图片时,缓存无效的原因。
使用Volley的ImageLoader异步获取并缓存图片时,发现有的网络图片已经缓存了,可是断网后却读不出来. ImageLoader的用法: RequestQueue requestQueue = ...
随机推荐
- java代码发起POST请求,并封装条件
一.场景 不同的系统采用调用,这里我们是定时任务调用其他系统的接口获取数据并返回处理 二.代码 技术点: 发起Post请求 封装接口所需条件<key,vlaue> 将返回的{"c ...
- ModelForm验证笔记
Form验证 UserInfoForm --> Form -->BaseForm(is_valid...) UserInfoModelForm -->ModelForm ...
- 【UEFI】DXE阶段从概念到代码
总述 DXE(Driver Execution Environment)阶段,是执行大部分系统初始化的阶段,也就是说是BIOS发挥作用,初始化整个主板的主战场.在这个阶段我们可以进行大量的驱动工作. ...
- Java安全01——URLDNS链分析与利用
URLDNS链分析与利用 作用 URLDNS 利用链只能发起 DNS 请求,不能执行命令,所以用于漏洞的检测 不限制JDK版本,使用Java内置类,无第三方依赖要求 可以进行无回显探测 利用链 利 ...
- 读书笔记:深度工作(deep work)
读书笔记:深度工作(deep work) 目录 读书笔记:深度工作(deep work) 第一部分:The Idea 第二部分:The Rules 准则一:工作要深入 准则二:拥抱无聊 准则三:远离社 ...
- Spring注解之自定义注解入门
目录 前言 注解是什么 自定义注解 元注解 @Target @Retention @Documented @Inherited 结束语 Reference 前言 在业务开发过程中,Spring 框 ...
- 洛谷 SP7258 SUBLEX - Lexicographical Substring Search
洛谷 SP7258 SUBLEX - Lexicographical Substring Search Problem 先给你一个字符串s,后有T次询问.询问这个字符串的所有本质不同的子串中第k小的子 ...
- python学习思维导图分享
python 本文包含了我的一些python学习的笔记和思维导图 第一部分:python基础 导图下载链接 第二部分:函数及其他文件操作 导图下载链接 第三部分:类及网络编程 导图下载链接 第四部分: ...
- Vue3中Mock数据的简单方案
因为Vue3项目开发中需要用到Mock数据,所以这里记录一种快速Mock数据的方法. 一.安装 首先,你需要安装 axios 和 axios-mock-adapter. npm install axi ...
- onnxruntime-gpu创建会话时报错:Could not load symbol cudnnGetLibConfig. Error code 127
最近在新的设备上做模型的demo,模型训练好之后,我习惯的拉取了我基于pyqt5和onnxruntime的demo演示代码,我按照我的cuda和cudnn环境,安装了1.19的onnxruntim ...