unity 生成縮圖
阿新 • • 發佈:2018-12-14
根據記憶體的圖片生成縮圖
public void CreateThumbnail(byte[] bytes, string path) { int w = 125, h = 125; Texture2D mThumbnail = new Texture2D(1, 1); mThumbnail.LoadImage(bytes); //mThumbnail.Scale(w, h); Texture2D thumb = ScaleTexture(mThumbnail, w, h); Object.DestroyImmediate(mThumbnail); byte[] bytesThumbnail = thumb.EncodeToPNG(); System.IO.FileStream outputThumbnail = new System.IO.FileStream(path, FileMode.Create); outputThumbnail.Write(bytesThumbnail, 0, bytesThumbnail.Length); outputThumbnail.Flush(); outputThumbnail.Close(); Object.DestroyImmediate(thumb); }
public void SaveToThumbnailFile(string path, byte[] bytes) { int w = 125; int h = 125; Texture2D mThumbnail = new Texture2D(1, 1); mThumbnail.LoadImage(bytes); //mThumbnail.Scale(w, h); Texture2D thumb = ScaleTexture(mThumbnail, w, h); Object.DestroyImmediate(mThumbnail); byte[] bytesThumbnail = thumb.EncodeToJPG(); System.IO.FileStream outputThumbnail = new System.IO.FileStream(path, FileMode.Create); outputThumbnail.Write(bytesThumbnail, 0, bytesThumbnail.Length); outputThumbnail.Flush(); outputThumbnail.Close(); Object.DestroyImmediate(thumb); }
public Texture2D ScaleTexture(Texture2D source, int targetWidth, int targetHeight) { Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, false); float incX = (1.0f / (float)targetWidth); float incY = (1.0f / (float)targetHeight); for (int i = 0; i < result.height; ++i) { for (int j = 0; j < result.width; ++j) { Color newColor = source.GetPixelBilinear((float)j / (float)result.width, (float)i / (float)result.height); result.SetPixel(j, i, newColor); } } result.Apply(); return result; }