package threadHandles; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import application.FXController; import javafx.embed.swing.SwingFXUtils; import javafx.scene.image.Image; public class CoverArtThread extends Thread { public static byte[] imageByte; @Override public void run() { try { // set cover art album image in window Image image; URL coverArtUrl = new URL(FXController.coverArtUrl); BufferedImage img = ImageIO.read(coverArtUrl); if (img.getHeight() != img.getWidth()) { int newSize; if (img.getHeight() < img.getWidth()) { newSize = img.getHeight(); } else { newSize = img.getWidth(); } BufferedImage newImage = new BufferedImage(newSize, newSize, BufferedImage.TYPE_INT_RGB); Graphics g = newImage.createGraphics(); g.drawImage(img, 0, 0, newSize, newSize, null); g.dispose(); image = SwingFXUtils.toFXImage(newImage, null); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(newImage, "jpeg", baos); imageByte = baos.toByteArray(); } else { image = SwingFXUtils.toFXImage(img, null); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(img, "jpeg", baos); imageByte = baos.toByteArray(); } SearchThread.image = image; } catch (IOException e) { e.printStackTrace(); } } }