- Home /
Workaround for Image.FromStream(tmpStream); in Webplayer for gif files
Hi!
This works in the Unity Editor, but when I compile it in Webplayer plattform and open it in firefox, I get the Error, that System.Runtime.InteropServices.ComTypes.IStream namespace is not available. So Webplayer not supports several namespaces in System.Drawing.dll. This line throws an exception: var gifImage = Image.FromStream(tmpStream); Can anyone give me a workaround for that? I guess I need a parser to convert bytes into an Image instance.
Full souce code:
/// <summary>
/// Loads the image via WWW class.
/// </summary>
/// <returns></returns>
/// <param name="path">Path.</param>
IEnumerator LoadImageWWW(string path) {
// Start web request
WWW req = new WWW (ConvertToUrlFriendly(path));
// Wait for answer
yield return req;
// Did an error appear during loading?
if (req.error != null)
// Log error and skip this file
Debug.LogError (req.error);
else {
// Creates Stream
MemoryStream tmpStream = new MemoryStream(req.bytes);
// Initialize gif function
var gifImage = Image.FromStream(tmpStream);
drawPosition = new Vector2 (centerPosition.x-gifImage.Width/2.0f,centerPosition.y-gifImage.Height/2.0f);
var dimension = new FrameDimension(gifImage.FrameDimensionsList[0]);
int frameCount = gifImage.GetFrameCount(dimension);
for (int i = 0; i < frameCount; i++)
{
gifImage.SelectActiveFrame(dimension, i);
var frame = new Bitmap(gifImage.Width, gifImage.Height);
System.Drawing.Graphics.FromImage(frame).DrawImage(gifImage, Point.Empty);
var frameTexture = new Texture2D(frame.Width, frame.Height);
for (int x = 0; x < frame.Width; x++)
for (int y = 0; y < frame.Height; y++)
{
System.Drawing.Color sourceColor = frame.GetPixel(x, y);
frameTexture.SetPixel(x, frame.Height -1 - y, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A)); // for some reason, x is flipped
}
frameTexture.Apply();
gifFrames.Add(frameTexture);
}
}
}
Thank you in advance!
Your answer
![](https://koobas.hobune.stream/wayback/20220612032900im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Why can't I build Web Player in Unity while I have no problems with building standalone versions? 2 Answers
MacOS Web Player - Black Dynamic objects 0 Answers
Is dynamic font supported on webplayer? 1 Answer
Is there any additional functionality to customize webplayer lodaing screen? 0 Answers
Trouble resizing webplayer 1 Answer