您的位置:首页 > 其它

webplayer的截图实现

2016-03-09 10:20 375 查看
首先是建一个 C# 类:

using System;

using UnityEngine;

using System.Collections;

public class PostPng

{

public static string UploadUrl = http://127.0.0.1/getpng.php;
public static void UploadPNG(MonoBehaviour thread, string fileName, Action<bool> result)

{

thread.StartCoroutine(UploadPNG(fileName, result));

}

private static IEnumerator UploadPNG(string fileName, Action<bool> result)

{

yield return new WaitForEndOfFrame();

int width = Screen.width;

int height = Screen.height;

Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);

tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);

tex.Apply();

byte[] bytes = tex.EncodeToPNG();

GameObject.Destroy(tex);

WWWForm form = new WWWForm();

form.AddField("enctype", "multipart/form-data");

form.AddBinaryData("PngUpload", bytes, fileName, "image/png");

WWW post = new WWW(UploadUrl , form);

yield return post;

if (string.IsNullOrEmpty(post.error) && result != null)

{

result(true);

}

else

{

result(false);

}

post.Dispose();

}

}

再建一个 Cube,再建一个 C# 脚本:

OnGUI()

{

if (GUI.Button(new Rect(440, Screen.height - 25, 65, 23), "Snapshot"))

{

LoadHelp.UploadPNG(this, "Snapshot", delegate(bool result)

{

if (result)

{

Application.ExternalEval("alert('ok')");

}

});

}

}

最后要建立一个接受图片上传的程序,用什么取决于你的web服务器,我这里用的是php:

<?php

$filename = "";

$field = "PngUpload";

$pngfolder = "snapshot/";

if ($_FILES[$field]["error"] > 0)

{

echo "Error: " . $_FILES[$field]["error"];

}

else

{

$filename = $pngfolder . $_FILES[$field]["name"] . ".png";

move_uploaded_file($_FILES[$field]["tmp_name"], $filename);

echo("ok");

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: