|
4 | 4 |
|
5 | 5 | public class LibPngQuant { |
6 | 6 |
|
| 7 | + public boolean pngQuantFile(File inputFile, File outputFile) { |
| 8 | + //Use default quality in the windows batch file bundled with pngQuant |
| 9 | + return pngQuantFile(inputFile, outputFile,50,100); |
| 10 | + } |
| 11 | + |
7 | 12 | public boolean pngQuantFile(File inputFile, File outputFile, int minQuality, int maxQuality) { |
| 13 | + //Use lowest speed to get the best quality |
| 14 | + return pngQuantFile(inputFile, outputFile, minQuality, maxQuality, 1); |
| 15 | + } |
| 16 | + |
| 17 | + public boolean pngQuantFile(File inputFile, File outputFile, int minQuality, int maxQuality, int speed) { |
| 18 | + //Use the default dither value. |
| 19 | + return pngQuantFile(inputFile, outputFile, minQuality, maxQuality, speed, 1f); |
| 20 | + } |
| 21 | + |
| 22 | + public boolean pngQuantFile(File inputFile, File outputFile, int minQuality, int maxQuality, int speed, float floydDitherAmount) { |
8 | 23 | if (inputFile == null) throw new NullPointerException(); |
9 | 24 | if (!inputFile.exists()) throw new IllegalArgumentException(); |
10 | 25 | if (outputFile == null) throw new NullPointerException(); |
11 | 26 | if (outputFile.length() != 0) throw new IllegalArgumentException(); |
12 | | - if(minQuality >= maxQuality) throw new IllegalArgumentException(); |
13 | | - if( (minQuality < 0) || (minQuality > 100) ) throw new IllegalArgumentException(); |
14 | | - if( (maxQuality < 0) || (maxQuality > 100) ) throw new IllegalArgumentException(); |
15 | | - |
| 27 | + if (maxQuality < 0 || maxQuality > 100) throw new IllegalArgumentException(); |
| 28 | + if (minQuality < 0 || minQuality > 100) throw new IllegalArgumentException(); |
| 29 | + if (maxQuality < minQuality) throw new IllegalArgumentException(); |
| 30 | + if (speed < 1 || speed > 11) throw new IllegalArgumentException(); |
| 31 | + if (floydDitherAmount < 0f || floydDitherAmount > 1f) throw new IllegalArgumentException(); |
16 | 32 |
|
17 | 33 | String inputFilename = inputFile.getAbsolutePath(); |
18 | 34 | String outputFilename = outputFile.getAbsolutePath(); |
19 | 35 |
|
20 | | - return nativePngQuantFile(inputFilename, outputFilename, minQuality, maxQuality); |
| 36 | + return nativePngQuantFile(inputFilename, outputFilename, minQuality, maxQuality, speed, floydDitherAmount); |
21 | 37 | } |
22 | 38 |
|
23 | 39 | static { |
24 | 40 | System.loadLibrary("pngquantandroid"); |
25 | 41 | } |
26 | 42 |
|
27 | | - private static native boolean nativePngQuantFile(String inputFilename, String outputFilename,int minQuality, int maxQuality); |
| 43 | + private static native boolean nativePngQuantFile(String inputFilename, String outputFilename, int minQuality, int maxQuality, int speed, float floydDitherAmount); |
28 | 44 |
|
29 | 45 | } |
0 commit comments