Support for decoding webp images
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / converters / WebpEncoder.java
diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/converters/WebpEncoder.java b/src/main/java/eu/svjatoslav/meviz/encoder/converters/WebpEncoder.java
new file mode 100644 (file)
index 0000000..f3ac18e
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
+ */
+
+package eu.svjatoslav.meviz.encoder.converters;
+
+import eu.svjatoslav.meviz.encoder.EncodingOptions;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * webp encoder.
+ */
+public class WebpEncoder extends AbstractConverter {
+
+    @Override
+    public String getCommand(final File inputFile, final File targetFile,
+                             final EncodingOptions options, String targetFormat) {
+
+        String quality;
+
+        switch (options.getVideoBitrate()) {
+            case LOW:
+                quality = " -q 10 ";
+                break;
+            case MEDIUM:
+                quality = " -q 50 ";
+                break;
+            case HIGH:
+                quality = " -q 80 ";
+                break;
+            case COPY:
+            case LOSSLESS:
+            default:
+                quality = " -lossless ";
+        }
+
+        return "cwebp \"" + inputFile.getAbsolutePath() + "\"" +  quality + " -o \""
+                + targetFile.getAbsolutePath() + "\"";
+    }
+
+    @Override
+    public List<String> getSourceFileExtensions() {
+        return toList("tif", "tiff", "png", "jpg", "jpeg", "bmp", "gif");
+    }
+
+    @Override
+    public List<String> getTargetFileExtensions() {
+        return toList("webp");
+    }
+
+    @Override
+    public boolean isTerminalMandatory() {
+        return false;
+    }
+
+}