压缩Texture2D
//source 要压缩的texture
//targetWidth 压缩后的宽度
//targetHeight 压缩后的高度
public Texture2D ReduceTexture (Texture2D source, int targetWidth, int targetHeight) {
Texture2D result = new Texture2D (targetWidth, targetHeight, source.format, true);
Color[] rpixels = result.GetPixels (0);
float incX = ((float) 1 / source.width) * ((float) source.width / targetWidth);
float incY = ((float) 1 / source.height) * ((float) source.height / targetHeight);
for (int px = 0; px < rpixels.Length; px++) {
rpixels[px] = source.GetPixelBilinear (incX * ((float) px % targetWidth),
incY * ((float) Mathf.Floor (px / targetWidth)));
}
result.SetPixels (rpixels, 0);
result.Apply ();
return result;
}
截图保存到本地可以看到压缩了多少
//unity中屏幕截图
Texture2D screenshot = ScreenCapture.CaptureScreenshotAsTexture ();
System.IO.File.WriteAllBytes (@"图片存储路径", DeCompress (screenshot).EncodeToPNG ());
System.IO.File.WriteAllBytes (@"图片存储路径", DeCompress (ScaleTexture (screenshot, screenshot.width / 2, screenshot.height / 2)).EncodeToPNG ());