package at.favre.tools.dconvert.converters.postprocessing; import at.favre.tools.dconvert.arg.ImageType; import at.favre.tools.dconvert.converters.Result; import at.favre.tools.dconvert.util.PostProcessorUtil; import java.io.File; import java.util.Collections; /** * Optimzes jpeg with mozjpeg * https://github.com/mozilla/mozjpeg */ public class MozJpegProcessor extends APostProcessor { @Override public Result synchronizedProcess(File rawFile, boolean keepOriginal) { try { String[] args = new String[]{"jpegtran", "-outfile", "%%outFilePath%%", "-optimise", "-progressive", "-copy", "none", "%%sourceFilePath%%"}; return PostProcessorUtil.runImageOptimizer(rawFile, ImageType.JPG, args, keepOriginal); } catch (Exception e) { return new Result("could not execute post processor " + getClass().getSimpleName(), e, Collections.singletonList(rawFile)); } } @Override public boolean isSupported() { return PostProcessorUtil.canRunCmd(new String[]{"jpegtran", "-h"}); } }