[resolu]screen shot vers image ui

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
splitter77
Messages : 11
Inscription : 15 Fév 2018 10:52

[resolu]screen shot vers image ui

Message par splitter77 » 09 Juil 2018 10:45

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
Dernière édition par splitter77 le 26 Juil 2018 22:13, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: screen shot vers image ui

Message par boubouk50 » 09 Juil 2018 10:58

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
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

splitter77
Messages : 11
Inscription : 15 Fév 2018 10:52

Re: screen shot vers image ui

Message par splitter77 » 11 Juil 2018 16:31

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 .

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: screen shot vers image ui

Message par boubouk50 » 11 Juil 2018 17:12

Je repose ma question:
-As-tu besoin de stocker le screenshot? Doit-il être permanent?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

splitter77
Messages : 11
Inscription : 15 Fév 2018 10:52

Re: screen shot vers image ui

Message par splitter77 » 11 Juil 2018 17:27

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 .

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: screen shot vers image ui

Message par boubouk50 » 12 Juil 2018 09:11

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.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

splitter77
Messages : 11
Inscription : 15 Fév 2018 10:52

Re: screen shot vers image ui

Message par splitter77 » 12 Juil 2018 23:42

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

Répondre

Revenir vers « Scripting »