reghao 2 лет назад
Родитель
Сommit
3aca7bb586
2 измененных файлов с 32 добавлено и 30 удалено
  1. 6 0
      media/pom.xml
  2. 26 30
      media/src/main/java/cn/reghao/jutil/media/ImageOps.java

+ 6 - 0
media/pom.xml

@@ -28,5 +28,11 @@
             <artifactId>webp-imageio</artifactId>
             <artifactId>webp-imageio</artifactId>
             <version>0.1.6</version>
             <version>0.1.6</version>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.20</version>
+        </dependency>
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 26 - 30
media/src/main/java/cn/reghao/jutil/media/ImageOps.java

@@ -1,15 +1,14 @@
 package cn.reghao.jutil.media;
 package cn.reghao.jutil.media;
 
 
+import net.coobird.thumbnailator.Thumbnails;
+
 import javax.imageio.ImageIO;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
 import javax.imageio.ImageReader;
 import javax.imageio.stream.ImageInputStream;
 import javax.imageio.stream.ImageInputStream;
 import javax.imageio.stream.ImageOutputStream;
 import javax.imageio.stream.ImageOutputStream;
 import java.awt.*;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
 import java.util.Iterator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.List;
 import java.util.Locale;
 import java.util.Locale;
@@ -21,6 +20,11 @@ import java.util.Locale;
  * @date 2021-08-04 16:26:13
  * @date 2021-08-04 16:26:13
  */
  */
 public class ImageOps {
 public class ImageOps {
+    public static Size info(File file) throws IOException {
+        BufferedImage bi = ImageIO.read(file);
+        return new Size(bi.getWidth(), bi.getHeight());
+    }
+
     public static String getFormat(File file) {
     public static String getFormat(File file) {
         try (ImageInputStream iis = ImageIO.createImageInputStream(file);) {
         try (ImageInputStream iis = ImageIO.createImageInputStream(file);) {
             Iterator<ImageReader> iterator = ImageIO.getImageReaders(iis);
             Iterator<ImageReader> iterator = ImageIO.getImageReaders(iis);
@@ -40,10 +44,16 @@ public class ImageOps {
         BufferedImage image = ImageIO.read(iis);
         BufferedImage image = ImageIO.read(iis);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
         ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
-        ImageIO.write(image, "jpg", ios);
+        ImageIO.write(image, "jpeg", ios);
         return baos.toByteArray();
         return baos.toByteArray();
     }
     }
 
 
+    public static void convert2jpeg(File srcFile, File destFile) throws IOException {
+        ImageInputStream iis = ImageIO.createImageInputStream(srcFile);
+        BufferedImage image = ImageIO.read(iis);
+        ImageIO.write(image, "jpeg", destFile);
+    }
+
     public static byte[] convert2webp(File srcFile) throws IOException {
     public static byte[] convert2webp(File srcFile) throws IOException {
         ImageInputStream iis = ImageIO.createImageInputStream(srcFile);
         ImageInputStream iis = ImageIO.createImageInputStream(srcFile);
         BufferedImage image = ImageIO.read(iis);
         BufferedImage image = ImageIO.read(iis);
@@ -53,29 +63,15 @@ public class ImageOps {
         return baos.toByteArray();
         return baos.toByteArray();
     }
     }
 
 
-    public static byte[] png2jpg(File srcFile) throws IOException {
-        BufferedImage image = ImageIO.read(srcFile);
-        BufferedImage result = new BufferedImage(
-                image.getWidth(),
-                image.getHeight(),
-                BufferedImage.TYPE_INT_RGB);
-        result.createGraphics().drawImage(image, 0, 0, Color.WHITE, null);
-
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ImageIO.write(result, "jpg", baos);
-        return baos.toByteArray();
-    }
-
-    public static byte[] jpg2webp(byte[] bytes) throws IOException {
-        BufferedImage bi = ImageIO.read(new ByteArrayInputStream(bytes));
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ImageIO.write(bi, "webp", baos);
-        return baos.toByteArray();
+    public static void convert2webp(File srcFile, File destFile) throws IOException {
+        ImageInputStream iis = ImageIO.createImageInputStream(srcFile);
+        BufferedImage image = ImageIO.read(iis);
+        ImageIO.write(image, "webp", destFile);
     }
     }
 
 
-    public static Size info(File file) throws IOException {
-        BufferedImage bi = ImageIO.read(file);
-        return new Size(bi.getWidth(), bi.getHeight());
+    public static void convert2thumbnail(File srcFile, File destFile, int width, int height) throws IOException {
+        BufferedImage image = Thumbnails.of(srcFile).size(width, height).asBufferedImage();
+        ImageIO.write(image, "jpeg", destFile);
     }
     }
 
 
     public static BufferedImage merge(List<BufferedImage> bufferedImages, boolean isVertical) {
     public static BufferedImage merge(List<BufferedImage> bufferedImages, boolean isVertical) {
@@ -136,8 +132,8 @@ public class ImageOps {
         return newImage;
         return newImage;
     }
     }
 
 
-    public static BufferedImage resize(String imagePath, int size) throws IOException {
-        BufferedImage srcImage = ImageIO.read(new File(imagePath));
+    public static BufferedImage resize(File file, int size) throws IOException {
+        BufferedImage srcImage = ImageIO.read(file);
         int width = srcImage.getWidth()/size;
         int width = srcImage.getWidth()/size;
         int height = srcImage.getHeight()/size;
         int height = srcImage.getHeight()/size;
 
 
@@ -149,12 +145,12 @@ public class ImageOps {
     }
     }
 
 
     public static void saveImage(BufferedImage bufferedImage, String filePath) throws IOException {
     public static void saveImage(BufferedImage bufferedImage, String filePath) throws IOException {
-        ImageIO.write(bufferedImage, "jpg", new File(filePath));
+        ImageIO.write(bufferedImage, "jpeg", new File(filePath));
     }
     }
 
 
     public static void saveImage(ByteArrayOutputStream baos, String filePath) throws IOException {
     public static void saveImage(ByteArrayOutputStream baos, String filePath) throws IOException {
         BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(baos.toByteArray()));
         BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(baos.toByteArray()));
-        ImageIO.write(bufferedImage, "jpg", new File(filePath));
+        ImageIO.write(bufferedImage, "jpeg", new File(filePath));
     }
     }
 
 
     public static class Size {
     public static class Size {