1 module dlibwebp.api; 2 3 import impl = dlibwebp.impl; 4 5 import dlib.image; 6 import dlib.core.compound; 7 import dlib.core.stream; 8 9 10 11 class WEBPLoadException: ImageLoadException { 12 this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null) { 13 super(msg, file, line, next); 14 } 15 } 16 17 18 /++ 19 + Throws: WEBPLoadException. 20 +/ 21 SuperImage loadWEBP(string filename) { 22 return impl.loadWEBP(filename); 23 } 24 25 /++ 26 + Throws: WEBPLoadException. 27 +/ 28 SuperImage loadWEBP(InputStream input) { 29 return impl.loadWEBP(input); 30 } 31 32 /++ 33 + Throws: WEBPLoadException. 34 +/ 35 SuperImage loadWEBP(in ubyte[] webp) { 36 return impl.loadWEBP(webp); 37 } 38 39 40 enum WEBPQuality : int 41 { 42 LOSSLESS = -1, 43 LOWEST = 0, 44 LOW = 50, 45 DEFAULT = 75, 46 HIGH = 80, 47 HIGHEST = 100 48 } 49 50 51 /++ 52 + Throws: WEBPLoadException. 53 +/ 54 void saveWEBP(SuperImage img, string filename, int quality = WEBPQuality.DEFAULT) 55 { 56 assert(quality >= WEBPQuality.LOSSLESS); 57 assert(quality <= WEBPQuality.HIGHEST); 58 59 if (WEBPQuality.LOSSLESS == quality) 60 { 61 return impl.saveLosslessWEBP(img, filename); 62 } 63 else 64 { 65 return impl.saveWEBP(img, quality, filename); 66 } 67 } 68 69 deprecated("Use img.saveWEBP(filename, quality) instead.") 70 void saveWEBP(SuperImage img, int quality, string filename) 71 { 72 return img.saveWEBP(filename, quality); 73 } 74 75 deprecated("Use img.saveWEBP(filename, WEBPQuality.LOSSLESS) instead.") 76 void saveLosslessWEBP(SuperImage img, string filename) 77 { 78 return img.saveWEBP(filename, WEBPQuality.LOSSLESS); 79 } 80 81 /++ 82 + Returns: `false` and an error message on failure. 83 +/ 84 Compound!(bool, string) saveWEBP(SuperImage img, OutputStream output, int quality = WEBPQuality.DEFAULT) 85 { 86 assert(quality >= WEBPQuality.LOSSLESS); 87 assert(quality <= WEBPQuality.HIGHEST); 88 89 if (WEBPQuality.LOSSLESS == quality) 90 { 91 return impl.saveLosslessWEBP(img, output); 92 } 93 else 94 { 95 return impl.saveWEBP(img, quality, output); 96 } 97 } 98 99 deprecated("Use img.saveWEBP(output, quality) instead.") 100 Compound!(bool, string) saveWEBP(SuperImage img, int quality, OutputStream output) 101 { 102 return img.saveWEBP(output, quality); 103 } 104 105 deprecated("Use img.saveWEBP(output, WEBPQuality.LOSSLESS) instead.") 106 Compound!(bool, string) saveLosslessWEBP(SuperImage img, OutputStream output) 107 { 108 return img.saveWEBP(output, WEBPQuality.LOSSLESS); 109 } 110 111 /++ 112 + Throws: WEBPLoadException. 113 +/ 114 ubyte[] saveWEBPToArray(SuperImage img, int quality = WEBPQuality.DEFAULT) 115 { 116 assert(quality >= WEBPQuality.LOSSLESS); 117 assert(quality <= WEBPQuality.HIGHEST); 118 119 if (WEBPQuality.LOSSLESS == quality) 120 { 121 return impl.saveLosslessWEBPToArray(img); 122 } 123 else 124 { 125 return impl.saveWEBPToArray(img, quality); 126 } 127 } 128 129 deprecated("Use img.saveWEBPToArray(WEBPQuality.LOSSLESS) instead.") 130 ubyte[] saveLosslessWEBPToArray(SuperImage img) { 131 return img.saveWEBPToArray(WEBPQuality.LOSSLESS); 132 } 133 134