=Updating sorting packages

Moved any commands to do with image processing into separate package
This commit is contained in:
Alex Stewart
2020-09-29 02:56:15 -04:00
parent 6ddb0fc532
commit 2872ab8b03
7 changed files with 328 additions and 322 deletions
+93
View File
@@ -0,0 +1,93 @@
package commands.images;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import core.Command;
import core.LocStrings;
import dataStructures.*;
import utils.ImageUtils;
public class CommandStark extends Command
{
public CommandStark(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
public String getHelpText() { return LocStrings.stub("StarkInfo"); };
private static Long num = 0l;
@Override
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
{
String name = null;
String filename = null;
File preProcessed = null;
File postProcessed = null;
synchronized(num)
{
name = "snapped_" + num + ".png";
++num;
}
try
{
try
{
filename = ImageUtils.downloadFromURL(input.args.split(" ")[0], ".png");
preProcessed = new File(filename);
}
catch(Exception e)
{
KittyUser person = user;
if(input.mentions != null)
person = input.mentions[0];
filename = ImageUtils.downloadFromURL(person.avatarID, ".png");
if(filename == null)
return;
}
preProcessed = new File(filename);
applySnap(ImageIO.read(preProcessed), name);
}
catch (IOException e)
{
e.printStackTrace();
}
postProcessed = new File(name);
res.sendFile(postProcessed, "png");
ImageUtils.blockingFileDelete(preProcessed);
ImageUtils.blockingFileDelete(postProcessed);
}
private static void applySnap(BufferedImage image, String name) throws IOException
{
BufferedImage snap = ImageUtils.copyImage(image);
// Iterate over each column left to right and touch up each pixel
for(int x = 0; x < snap.getWidth(); ++x)
{
for(int y = 0; y < snap.getHeight(); ++y)
{
Color c = new Color(snap.getRGB(x, y), true);
int alpha = c.getAlpha();
if(x * Math.random() > 25)
alpha = (int)((1 - (x / ((float)snap.getWidth()))) * 255);
Color snapped = new Color(c.getRed(),c.getGreen(), c.getBlue(), alpha);
snap.setRGB(x, y, snapped.getRGB());
}
}
File outputfile = new File(name);
ImageIO.write(snap, "png", outputfile);
}
}