| @ -0,0 +1,59 @@ | |||||
| package de.yannicpunktdee.yoshibot.command.commands; | |||||
| import de.yannicpunktdee.yoshibot.command.YoshiCommand; | |||||
| import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; | |||||
| import de.yannicpunktdee.yoshibot.utils.GifSequenceWriter; | |||||
| import de.yannicpunktdee.yoshibot.utils.Resources; | |||||
| import javax.imageio.ImageIO; | |||||
| import javax.imageio.stream.FileImageOutputStream; | |||||
| import javax.imageio.stream.ImageOutputStream; | |||||
| import java.awt.*; | |||||
| import java.awt.image.BufferedImage; | |||||
| import java.io.File; | |||||
| import java.io.IOException; | |||||
| import java.util.UUID; | |||||
| public class BonkCommand extends YoshiCommand { | |||||
| public BonkCommand(YoshiCommandContext context) { | |||||
| super(context); | |||||
| } | |||||
| @Override | |||||
| public boolean execute() { | |||||
| if(!super.execute()) return false; | |||||
| File outFile = new File(Resources.getTempPath() + UUID.randomUUID().toString() + ".gif"); | |||||
| try { | |||||
| BufferedImage inPicture = ImageIO.read(downloadAttachmentToFile(null, null)); | |||||
| BufferedImage bonk1Picture = ImageIO.read(new File(Resources.getBonkPngPath() + "bonk1.png")); | |||||
| BufferedImage bonk2Picture = ImageIO.read(new File(Resources.getBonkPngPath() + "bonk2.png")); | |||||
| BufferedImage frame1 = getOutFrame(bonk1Picture, inPicture, 615, 155, 185, 345); | |||||
| ImageOutputStream output = new FileImageOutputStream(outFile); | |||||
| GifSequenceWriter writer = new GifSequenceWriter(output, frame1.getType(), 100, true); | |||||
| writer.writeToSequence(frame1); | |||||
| writer.writeToSequence(getOutFrame(bonk2Picture, inPicture, 455, 155, 345, 345)); | |||||
| writer.close(); | |||||
| output.close(); | |||||
| } catch (IOException e) { | |||||
| sendMessage("GIF konnte nicht erstellt werden."); | |||||
| return false; | |||||
| } | |||||
| context.getEvent().getTextChannel().sendFile(outFile).queue(); | |||||
| return true; | |||||
| } | |||||
| private BufferedImage getOutFrame(BufferedImage bonkDogGraphics, BufferedImage personGraphics, int x, int y, int width, int height){ | |||||
| BufferedImage outFrame = new BufferedImage(800, 500, BufferedImage.TYPE_INT_RGB); | |||||
| Graphics2D g = outFrame.createGraphics(); | |||||
| g.setColor(Color.black); | |||||
| g.drawImage(personGraphics, x, y, width, height, null); | |||||
| g.drawImage(bonkDogGraphics, 0, 0, 680, 412, null); | |||||
| return outFrame; | |||||
| } | |||||
| } | |||||