From 7e65b4363e96d8050388d2cb32ebe116a6084165 Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Wed, 17 Jul 2024 18:07:57 +0200 Subject: [PATCH] Added 2 new command line options II --- .../org/nanoboot/youtubedlfrontend/Main.java | 11 ++++++++++- .../org/nanoboot/youtubedlfrontend/Utils.java | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/nanoboot/youtubedlfrontend/Main.java b/src/main/java/org/nanoboot/youtubedlfrontend/Main.java index 6bccdaf..fbaf5da 100755 --- a/src/main/java/org/nanoboot/youtubedlfrontend/Main.java +++ b/src/main/java/org/nanoboot/youtubedlfrontend/Main.java @@ -18,6 +18,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package org.nanoboot.youtubedlfrontend; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -289,7 +290,15 @@ public class Main { .append(youtubeVideo.getMiniThumbnailFormat()).toString(); if (thumbnailAsBase64) { try { - byte[] bytes= Files.readAllBytes(new File(archiveBoxRootDirectory + "/" + thumbnailPath).toPath()); + byte[] bytes = Files.readAllBytes(new File(archiveBoxRootDirectory + "/" + thumbnailPath).toPath()); + System.out.println("###=" + archiveBoxRootDirectory + "/" + thumbnailPath); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + try { + bytes = Utils.resizeImage(bais, 25, (int) (9d / 16d * 25d), youtubeVideo.getThumbnailFormat()); + } catch (Exception e) { + //bytes = Utils.resizeImage(bais, 125, (int) (9d / 16d * 125d), "webp"); + } + String bytesS = "data:image/jpg;base64, " + org.nanoboot.powerframework.io.bit.base64.Base64Coder.encode(bytes); sb.append(bytesS); } catch (IOException ex) { diff --git a/src/main/java/org/nanoboot/youtubedlfrontend/Utils.java b/src/main/java/org/nanoboot/youtubedlfrontend/Utils.java index 55b8560..b8ec709 100644 --- a/src/main/java/org/nanoboot/youtubedlfrontend/Utils.java +++ b/src/main/java/org/nanoboot/youtubedlfrontend/Utils.java @@ -19,8 +19,12 @@ package org.nanoboot.youtubedlfrontend; import dev.mccue.guava.hash.Hashing; +import java.awt.Image; +import java.awt.image.BufferedImage; import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; @@ -33,6 +37,7 @@ import java.nio.file.StandardCopyOption; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import javax.imageio.ImageIO; /** * @@ -182,5 +187,17 @@ public class Utils { throw new YoutubedlFrontendException("Could not create boolean from String: " + s); } } - + public static byte[] resizeImage(InputStream inputStream, int width, int height, String formatName) throws IOException { + BufferedImage sourceImage = ImageIO.read(inputStream); + Image thumbnail = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH); + BufferedImage bufferedThumbnail = new BufferedImage(thumbnail.getWidth(null), + thumbnail.getHeight(null), + BufferedImage.TYPE_INT_RGB); + bufferedThumbnail.getGraphics().drawImage(thumbnail, 0, 0, null); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(bufferedThumbnail, formatName, baos); + return baos.toByteArray(); + } + }