|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
namespace uc
|
|
|
|
|
|
{
|
|
|
|
|
|
//https://developers.facebook.com/docs/graph-api/reference/page/photos/
|
|
|
|
|
|
public class FBFanPagePhoto : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public Texture photo;
|
|
|
|
|
|
public string message;
|
|
|
|
|
|
public bool noStory = false;
|
|
|
|
|
|
|
|
|
|
|
|
[Header("Settings")]
|
|
|
|
|
|
[Range(1, 5)]
|
|
|
|
|
|
public int downScaleRatio = 1;
|
|
|
|
|
|
|
|
|
|
|
|
public WWWForm GetForm()
|
|
|
|
|
|
{
|
|
|
|
|
|
WWWForm form = new WWWForm();
|
|
|
|
|
|
if (message != "")
|
|
|
|
|
|
form.AddField("message", message);
|
|
|
|
|
|
|
|
|
|
|
|
if (photo != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
byte[] bytes = ProcessPhoto(photo);
|
|
|
|
|
|
form.AddBinaryData("source", bytes, "screenShot.png", "image/png");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(noStory)
|
|
|
|
|
|
form.AddField("no_story", "true");
|
|
|
|
|
|
|
|
|
|
|
|
return form;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
byte[] ProcessPhoto(Texture tex)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (downScaleRatio != 1 || (tex as Texture2D) == null)
|
|
|
|
|
|
return BlitPhoto(tex).EncodeToPNG();
|
|
|
|
|
|
else
|
|
|
|
|
|
return (tex as Texture2D).EncodeToPNG();
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (UnityException)
|
|
|
|
|
|
{
|
|
|
|
|
|
return BlitPhoto(tex).EncodeToPNG();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Texture2D BlitPhoto(Texture tex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RenderTexture temp = RenderTexture.GetTemporary(photo.width / downScaleRatio, photo.height / downScaleRatio, 0, RenderTextureFormat.ARGB32);
|
|
|
|
|
|
Graphics.Blit(photo, temp);
|
|
|
|
|
|
RenderTexture current = RenderTexture.active;
|
|
|
|
|
|
RenderTexture.active = temp;
|
|
|
|
|
|
Texture2D newTex = new Texture2D(temp.width, temp.height, TextureFormat.RGB24, false);
|
|
|
|
|
|
newTex.ReadPixels(new Rect(0, 0, temp.width, temp.height), 0, 0);
|
|
|
|
|
|
newTex.Apply();
|
|
|
|
|
|
RenderTexture.active = current;
|
|
|
|
|
|
|
|
|
|
|
|
return newTex;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|