服务器开发之Unity3d(C#)图片上传下载

作者: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 
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值