作者:oneym
本文地址:http://blog.csdn.net/oneym/article/details/48734049
一、前言
游戏中图片的上传下载是一个亘古不变的话题,这次在开发游戏服务器的过程中也不可避免的出现了图片下载和上传的问题。遇到了PNG图片下载完成后透明的部分变成黑色、图片上传附带验证信息、下载后文件不一样的问题。
二、问题回顾
服务器上面保存了一张完整的png图片,图片中有大片的透明部分。在图片下载到本地后出现透明部分变成了黑色。我是用的是下面的方法:
String url = "http://IP:port/XXX.png";
WWW www = new WWW(url);
Texture2D image = www.texture;
byte[] imageByte = image.EncodeToPNG();
String outSavePaht = "本地路径\XXX.png";
File.WriteAllBytes(outSavePaht, imageByte);
用这个方法下载下来的PNG图片会出现透明部分黑掉。下载后会出现与上传的图片大小不一致的问题,这个问题后来使用了文件校验的方式来解决了。
图片上传的时候除了要发送校验方式还需要一并发送相关的数据。最初的想法是要把相关的信息在图片中保存(没有分开),后面的解决方法是将图片和数据再一次发送中分开,做成一个数据封包。这样做的效果显著,顺利的解决了我的问题。
三、一个可行的解决方案
1、图片上传(服务端接收)
这边给一个测试用的表单,如下:
$this->show('<form