Advertisement
Guest User

Untitled

a guest
May 21st, 2016
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. @Override
  2. public File call() throws Exception {
  3.  
  4. final File res = new File(Minecraft.getMinecraft().mcDataDir, "screenshots/test.gif").getCanonicalFile();
  5.  
  6. try {
  7.  
  8. final AnimatedGIFWriter writer = new AnimatedGIFWriter(true);
  9. final FileOutputStream os = new FileOutputStream(res);
  10.  
  11. try {
  12. writer.prepareForWrite(os, -1, -1);
  13.  
  14. float percPerFrame = 1.0f / frames.size();
  15.  
  16. for (int[] frame : frames) {
  17. BufferedImage bufferedimage = null;
  18.  
  19. if (OpenGlHelper.isFramebufferEnabled()) {
  20. bufferedimage = new BufferedImage(buffer.framebufferWidth, buffer.framebufferHeight, 1);
  21. int j = buffer.framebufferTextureHeight - buffer.framebufferHeight;
  22.  
  23. for (int k = j; k < buffer.framebufferTextureHeight; ++k) {
  24. for (int l = 0; l < buffer.framebufferWidth; ++l) {
  25. bufferedimage.setRGB(l, k - j, frame[k * buffer.framebufferTextureWidth + l]);
  26. }
  27. }
  28. } else {
  29. bufferedimage = new BufferedImage(width, height, 1);
  30. bufferedimage.setRGB(0, 0, width, height, frame, 0, width);
  31. }
  32.  
  33. float scale;
  34. if (width > height) {
  35. scale = 500.0f / width;
  36. } else {
  37. scale = 500.0f / height;
  38. }
  39. if (scale < 1) {
  40. int w = (int) (width * scale);
  41. int h = (int) (height * scale);
  42. BufferedImage resizedImg = new BufferedImage(w, h, bufferedimage.getType());
  43. Graphics2D g2 = resizedImg.createGraphics();
  44. g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  45. g2.drawImage(bufferedimage, 0, 0, w, h, null);
  46. g2.dispose();
  47. bufferedimage = resizedImg;
  48. }
  49.  
  50. writer.writeFrame(os, bufferedimage, 30);
  51. percentComplete = Math.min(1, percentComplete + percPerFrame);
  52. }
  53.  
  54. writer.finishWrite(os);
  55. } catch (Exception e) {
  56. CTBMod.logger.error("Error writing gif.", e);
  57. return null;
  58. } finally {
  59. IOUtils.closeQuietly(os);
  60. }
  61.  
  62. } catch (FileNotFoundException e) {
  63. CTBMod.logger.error("Could not create gif file.", e);
  64. return null;
  65. } finally {
  66. frames.clear();
  67. }
  68.  
  69. return res;
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement