Reputation: 521
I have a scene in which I have declared an image in a canvas
To that image I need to load an image from a link ("http/assets/screensaver")
I actually have done something to load the image :
urllll = "http://192.168.137.129/ooredoo/client_api/" + ConfirmPath;
WWW imgLink1 = new WWW (urllll);
img1 = imgLink1.texture;
EDIT: full code
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
using System.IO;
using UnityEngine.Events;
using LitJson;
using System.Data;
using Mono.Data.Sqlite;
using System.Linq;
using System.Collections.Generic;
using System;
public class ScreenSaverFromServer : MonoBehaviour
{
public Text Tester;
public int st = 0;
public int TimerFrAdd = 30;
public int OgTimerFrAdd;
public int ImageSize = 5;
public Image[] Imagez;
public Image Imag;
public int TimeToChangeImage = 10;
public int TimeToChangeVideo= 10;
public string imagePath = "Assets/Images/1K.png";
public Image photo;
public Texture2D img1;
public string urllll;
public string ConfirmPath;
public string[] paths = {"1","2","3","4","5","6","7","8","9","10"};
public string[] VedioPaths = { "Look at NEW Trump's 2-minute closing argument ad.mp4","The 2 minutes love story of TV Commercial for Canon 'You are my inspiration'.mp4"};
public string ConfirmPath1;
public int PathNO1;
public int PathNO ;
public bool guitextureindi = true;
public Image guitextureindFrame;
public string screensavertype,ImageFrameIndic;
void Start ()
{
OgTimerFrAdd = TimerFrAdd;
Tester = GameObject.Find ("Tester").GetComponent<Text> ();
InvokeRepeating("touches1", 1, 1);
Imag = GameObject.Find("ImageFrame").GetComponent<Image>();
Imag.enabled = false;
screensavertype = PlayerPrefs.GetString ("screensavertype");
ImageFrameIndic = PlayerPrefs.GetString ("screensaverActive");
}
void Update ()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
print ("touched");
if (TimerFrAdd == 0)
{
InvokeRepeating("touches1", 1, 1);
}
TimerFrAdd = OgTimerFrAdd;
Imag.enabled = false;
}
if (guitextureindFrame.enabled)
{
guitextureindi = true;
}
if(screensavertype == "0")
{
Imag.enabled = false;
}
}
public void touches1()
{
TimerFrAdd = TimerFrAdd - 1;
Tester.text = TimerFrAdd.ToString ();
if (TimerFrAdd == 0)
{
if(ImageFrameIndic == "1")
{
Imag.enabled = true;
}
CancelInvoke (methodName : "touches1");
string[] CallChange = {"ChangeImage","ChangeVideo" };
System.Random random0 = new System.Random();
int PathNO0 = random0.Next (CallChange.Length);
string ConfirmPath0 = CallChange[PathNO0];
print (ConfirmPath0);
InvokeRepeating ("ChangeImage", 1, TimeToChangeImage);
}
}
public void ChangeImage()
{
//System.Random random = new System.Random();
//PathNO = random.Next (paths.Length);
//ConfirmPath = paths[PathNO];
//photo.sprite =Resources.Load<Sprite>("Images/"+ConfirmPath) as Sprite ;
print("aaaaaaaa");
StartCoroutine (LoadImg1());
}
public void ChangeVideo()
{
Imag.enabled = false;
CancelInvoke (methodName : "ChangeImage");
CancelInvoke (methodName : "touches1");
CancelInvoke (methodName : "ChangeVideo");
System.Random random1 = new System.Random();
PathNO1 = random1.Next (VedioPaths.Length);
ConfirmPath1 = VedioPaths[PathNO1];
Handheld.PlayFullScreenMovie (ConfirmPath1,Color.black, FullScreenMovieControlMode.CancelOnInput);
if (TimerFrAdd == 0)
{
InvokeRepeating("touches1", 1, 1);
TimerFrAdd = OgTimerFrAdd;
}
}
IEnumerator LoadImg1()
{
yield return 0;
//List<string> Items13 = new List<string> (ScreenSaverCodesApi.Items12);
List<string> Items13 = ScreenSaverCodesApi.Items12;
print("aaaaaaaa2222222");
System.Random random1 = new System.Random();
print("aaaaaaaa333333");
int PathNO = Items13.Count;
int num = UnityEngine.Random.Range(0,PathNO);
print(num);
foreach (string st in Items13) {
print (st);
}
print ("path-----"+Items13[num]);
string ConfirmPath = Items13[num];
print(ConfirmPath);
print("aaaaaaaa555555");
urllll = "http://hcfhfch/nn/client_api/" + ConfirmPath; // test with an image link
print("aaaaaaaa6666666");
WWW imgLink1 = new WWW (urllll);
print("aaaaaaaa777777");
print (urllll);
print("aaaaaaaa888888");
yield return imgLink1;
print("aaaaaaaa999999");
img1 = imgLink1.texture;
}
void OnGUI()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
guitextureindi = false;
}
if (guitextureindi)
{
GUILayout.Label (img1);
}
}
}
Upvotes: 0
Views: 2340
Reputation: 125455
You are downloading a texture and storing it in the img1
variable which is a type of a Texture2D
. The Texture2D image is then displayed with GUILayout.Label
in the OnGUI
function. The problem is resizing the image...
Like I mentioned in your other post, do not use the OnGUI
function. Do not use any Unity API that requires the OnGUI
function unless you are making an Editor plugin.
In your function,
void OnGUI()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
guitextureindi = false;
}
if (guitextureindi)
{
GUILayout.Label (img1);
}
}
Pass the the width
and length
you want to the GUILayout.Label
function.
For example:
public float textureWidth = 400;
public float textureHeight = 400;
public Texture2D img1;
void OnGUI()
{
GUILayout.Label(img1, GUILayout.Width(textureWidth), GUILayout.Height(textureHeight));
}
The proper/correct way to display image in Unity:
With the Image
Component:
public float textureWidth = 400;
public float textureHeight = 400;
public Texture2D img1;
public Image textureDisplayer;
void SomeFunction()
{
textureDisplayer.sprite = Sprite.Create(img1, new Rect(0, 0, textureWidth, textureHeight), new Vector2());
}
With the RawImage
Component:
public int textureWidth = 400;
public int textureHeight = 400;
public Texture2D img1;
public RawImage textureDisplayer;
void SomeFunction()
{
img1.Resize(textureWidth, textureHeight);
textureDisplayer.texture = img1;
}
You can also resize the Image
or RawImage
on the screen with:
textureDisplayer.GetComponent<RectTransform>().sizeDelta = new Vector2(textureWidth, textureHeight);
Simple download, resize and display Image Sample:
public int textureWidth = 400;
public int textureHeight = 400;
public RawImage textureDisplayer;
void Start()
{
string imageUrl = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg";
StartCoroutine(LoadImg(imageUrl));
}
void displayImage(Texture2D imgToDisp)
{
//Resize Image
textureDisplayer.GetComponent<RectTransform>().sizeDelta = new Vector2(textureWidth, textureHeight);
textureDisplayer.texture = imgToDisp;
}
IEnumerator LoadImg(string url)
{
yield return null;
WWW www = new WWW(url);
yield return www;
displayImage(www.texture);
}
Upvotes: 1