From d5edabddece4c950df7a2da409ed521e9aac03c0 Mon Sep 17 00:00:00 2001 From: Julius de Jeu Date: Mon, 21 Jan 2019 21:18:31 +0100 Subject: [PATCH] Fix sizes --- .../kotlin/nl/aegeedelft/watermarker/Main.kt | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/nl/aegeedelft/watermarker/Main.kt b/src/main/kotlin/nl/aegeedelft/watermarker/Main.kt index 81ce6e5..6ff8bd0 100644 --- a/src/main/kotlin/nl/aegeedelft/watermarker/Main.kt +++ b/src/main/kotlin/nl/aegeedelft/watermarker/Main.kt @@ -1,20 +1,21 @@ package nl.aegeedelft.watermarker import org.intellij.lang.annotations.Language -import java.awt.* +import java.awt.BorderLayout +import java.awt.Component +import java.awt.Dimension +import java.awt.Image import java.awt.image.BufferedImage import java.awt.image.RenderedImage import java.io.BufferedInputStream import java.io.ByteArrayInputStream import java.io.File -import java.util.* import javax.imageio.IIOImage import javax.imageio.ImageIO import javax.imageio.ImageWriteParam import javax.imageio.stream.MemoryCacheImageOutputStream import javax.swing.* import javax.swing.filechooser.FileFilter -import kotlin.concurrent.timerTask @Language("RegExp") @@ -120,14 +121,16 @@ fun main(args: Array) { } fun doTheThing(basedir: File, outdir: File, watermarkpath: File) { - val watermark = ImageIO.read(watermarkpath) + val wmbase = ImageIO.read(watermarkpath) + + val scale = 3.6 //JOptionPane.showMessageDialog(jf, "", "Inserting watermark!", JOptionPane.INFORMATION_MESSAGE, ImageIcon(watermark)) //FrmPopUpInfo("Inserting Watermark", watermark) - for (f in basedir.listFiles()) { + for (f in basedir.listFiles().filter { filenameRegex.matches(it.name) }) { if (filenameRegex.matches(f.name.toString()) && !"jpe?g".toRegex().matches(f.extension)) { val image = ImageIO.read(f) - val combined = addWM(watermark, image) as RenderedImage + val combined = addWM(resize(wmbase, wmbase.width / scale, wmbase.height / scale), image) as RenderedImage ImageIO.write(combined, "JPG", File(outdir, f.nameWithoutExtension + ".jpg")) } else { @@ -139,7 +142,7 @@ fun doTheThing(basedir: File, outdir: File, watermarkpath: File) { val image = reader.read(0) val imageMetadata = reader.getImageMetadata(0) - val combined = addWM(watermark, image) as RenderedImage + val combined = addWM(resize(wmbase, wmbase.width / scale, wmbase.height / scale), image) as RenderedImage val iter = ImageIO.getImageWritersByMIMEType("image/jpeg") val writer = iter.next() @@ -167,6 +170,18 @@ fun addWM(watermark: BufferedImage, image: BufferedImage): Image { return combined } +fun resize(img: BufferedImage, newW: Double, newH: Double): BufferedImage { + + val tmp = img.getScaledInstance(newW.toInt(), newH.toInt(), Image.SCALE_SMOOTH) + val dimg = BufferedImage(newW.toInt(), newH.toInt(), BufferedImage.TYPE_INT_ARGB) + + val g2d = dimg.createGraphics() + g2d.drawImage(tmp, 0, 0, null) + g2d.dispose() + + return dimg +} + //class FrmPopUpInfo(message: String, image: Image) : JFrame() { // init { // this.title = message