public GameObject cameraPhoto;//拍照用的相机, 上面挂一个RenderTexture
public RenderTexture rawImage;//相机上挂的那个RenderTexture
IEnumerator TakePhoto()
{
cameraPhoto.SetActive(true);//开启相机,等下拍照
yield return new WaitForEndOfFrame();
RenderTexture prev = RenderTexture.active;
RenderTexture.active = rawImage;
//这里必须是TextureFormat.ARGB32 或者是类似的格式 不然解析不了, 在相机上那个RenderTexture里改
Texture2D png = new Texture2D(rawImage.width, rawImage.height, TextureFormat.ARGB32, false);
png.ReadPixels(new Rect(0, 0, rawImage.width, rawImage.height), 0, 0);
//转一下格式
byte[] bytes = png.EncodeToJPG();
Texture2D tex2D = new Texture2D(2, 2);
bool isLoad = tex2D.LoadImage(bytes);
tex2D.Apply();
if (isLoad)
{
//这里就是保存
//imgPhoto.texture = tex2D;
//panelPhoto.SetActive(true);
}
yield return new WaitForEndOfFrame();
cameraPhoto.SetActive(false);//为了减少DrawCall,平时不用的时候隐藏这个相机
}
我的Unity工具类---拍照并保存图片
最新推荐文章于 2024-01-15 15:30:00 发布