Page 1 sur 1

[resolu]screen shot vers image ui

Publié : 09 Juil 2018 10:45
par splitter77
Bonjour a tous, je m'arrache la tete pour charger une images prise par ScreenCapture.CaptureScreenshot et ensuite la charger dans mon image.ui .

voici le script pour la prise de screenshot.

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class buttonshot : MonoBehaviour {

    public GameObject interfacephoto;
    public GameObject obj3d;
    public Image screen;

    public void shot()
    {

        interfacephoto.SetActive(false);
        ScreenCapture.CaptureScreenshot("Resources/screen1.png");
        obj3d.SetActive(false);
        ScreenCapture.CaptureScreenshot("Resources/screen2.png");
        interfacephoto.SetActive(true);
        SceneManager.LoadScene("scenes/loadscreen");
    }



}

et le loadscreen

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class loadscreen : MonoBehaviour {

    public Sprite screen;
     
    // Use this for initialization
	void Start () {
        screen = gameObject.GetComponent<UnityEngine.UI.Image>().sprite;
        screen = Resources.Load<Sprite>("screen1");
	}
}
merci d'avance

Re: screen shot vers image ui

Publié : 09 Juil 2018 10:58
par boubouk50
Salut,

Le dossier Resources est compilé tu ne peux donc pas écrire dedans, sauf en éditeur, évidemment.
Il te faut donc stocker ton image en externe puis la charger ensuite via la classe WWW, par exemple, ensuite la convertir en Sprite pour pouvoir l'afficher.

Si tu n'as l'utilité de stocker les captures sur le disque, tu peux gérer cela directement via l'éditeur par un RenderTexture et un RawImage. En code, tu n'auras qu'à déclencher le RenderTexture sur une frame pour qu'il affiche le fond.
Je te laisse faire la recherche sur le net, il y a des exemples.

https://answers.unity.com/questions/888 ... image.html
https://answers.unity.com/questions/996 ... ure2d.html

Re: screen shot vers image ui

Publié : 11 Juil 2018 16:31
par splitter77
bonjour et merci de ta réponse,

j'ai trouvé une solution qui fonctionne sous windows mais pas sous android .

sous windows j ai

Code : Tout sélectionner

 string filepath = "file://"+Application.persistentDataPath + "/screen1.png";
sur android je le passe comme ça

Code : Tout sélectionner

 string filepath = "jar:file://"+Application.persistentDataPath + "!/screen1.png";
sous android si je remplace le filepath par une url d'image elle se charge sans souci, j'en deduis que mon local path sur android ne fonctionne pas et je n ai pas trouvé de solution à ca .

merci de votre aide .

Re: screen shot vers image ui

Publié : 11 Juil 2018 17:12
par boubouk50
Je repose ma question:
-As-tu besoin de stocker le screenshot? Doit-il être permanent?

Re: screen shot vers image ui

Publié : 11 Juil 2018 17:27
par splitter77
non pas vraiment, en fait pour t expliquer ce que je cherche a faire .

je lance une scene en realité augmentée, je prend un screen shot en retirant mon objet 3d et j'affiche le screenshot et je rajout ensuite l objet par dessus pour qu'on puis le bouger .

donc a priori je ne suis pas obligé de le stocker mais comme je debute je trouvais cette solution simple .

Re: screen shot vers image ui

Publié : 12 Juil 2018 09:11
par boubouk50
Au contraire, c'est plus compliqué car tu vas te frotter aux permissions/droits des mobiles.
Qui plus est, cette solution est lourde et lente, car il faut écrire un fichier image (lent et sans CallBack de sa création)pour ensuite le lire, alors que tu l'as déjà dans le programme!

Tu peux passer par le RenderTexture (relis mon message précédent) ou mieux encore, si tu récupères le flux caméra, tu n'as qu'à piocher directement dans cette RenderTexture.
Dans l'idée, tu as un flux caméra (je suppose puisque tu me parles de réalité augmentée) affiché en fond. Généralement, ce flux est un RenderTexture de la prise d'image caméra. C'est donc une suite d'images! Il te suffit donc juste de récupérer l'image depuis ce RenderTexture et de la copier dans ta texture.
https://answers.unity.com/questions/996 ... ure2d.html
Peut-être même que tu peux tout simplement mettre en Pause le flux caméra et donc avoir une image fixe en arrière plan.

Re: screen shot vers image ui

Publié : 12 Juil 2018 23:42
par splitter77
merci pour toute ces infos .

j'ai réussi a faire ce que je voulais mais tu a raison, j'ai été obligé de passé par une coroutine car je voulais lire l image alors qu'elle n"avait pas fini d"être stocker sur le tel, je vais me penché sur le rendercamera .

merci beaucoup des infos