Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public File call() throws Exception {
- final File res = new File(Minecraft.getMinecraft().mcDataDir, "screenshots/test.gif").getCanonicalFile();
- try {
- final AnimatedGIFWriter writer = new AnimatedGIFWriter(true);
- final FileOutputStream os = new FileOutputStream(res);
- try {
- writer.prepareForWrite(os, -1, -1);
- float percPerFrame = 1.0f / frames.size();
- for (int[] frame : frames) {
- BufferedImage bufferedimage = null;
- if (OpenGlHelper.isFramebufferEnabled()) {
- bufferedimage = new BufferedImage(buffer.framebufferWidth, buffer.framebufferHeight, 1);
- int j = buffer.framebufferTextureHeight - buffer.framebufferHeight;
- for (int k = j; k < buffer.framebufferTextureHeight; ++k) {
- for (int l = 0; l < buffer.framebufferWidth; ++l) {
- bufferedimage.setRGB(l, k - j, frame[k * buffer.framebufferTextureWidth + l]);
- }
- }
- } else {
- bufferedimage = new BufferedImage(width, height, 1);
- bufferedimage.setRGB(0, 0, width, height, frame, 0, width);
- }
- float scale;
- if (width > height) {
- scale = 500.0f / width;
- } else {
- scale = 500.0f / height;
- }
- if (scale < 1) {
- int w = (int) (width * scale);
- int h = (int) (height * scale);
- BufferedImage resizedImg = new BufferedImage(w, h, bufferedimage.getType());
- Graphics2D g2 = resizedImg.createGraphics();
- g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
- g2.drawImage(bufferedimage, 0, 0, w, h, null);
- g2.dispose();
- bufferedimage = resizedImg;
- }
- writer.writeFrame(os, bufferedimage, 30);
- percentComplete = Math.min(1, percentComplete + percPerFrame);
- }
- writer.finishWrite(os);
- } catch (Exception e) {
- CTBMod.logger.error("Error writing gif.", e);
- return null;
- } finally {
- IOUtils.closeQuietly(os);
- }
- } catch (FileNotFoundException e) {
- CTBMod.logger.error("Could not create gif file.", e);
- return null;
- } finally {
- frames.clear();
- }
- return res;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement