

GitHub - sejda-pdf/webp-imageio: Java ImageIO WebP support
source link: https://github.com/sejda-pdf/webp-imageio
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Forked repository
This is a fork from luciad/webp-imageio
Changes
- Native libs are bundled in the jar
- Published to Maven Central (
org.sejda.imageio
:webp-imageio
artifact) - Android support unknown (have not tested)
Supported platforms
- windows (32, 64 bit)
- linux (64 bit)
- mac (64 bit)
Description
Java Image I/O reader and writer for the Google WebP image format.
License
webp-imageio is distributed under the Apache Software License version 2.0.
Usage
- Add Maven dependency
org.sejda.imageio
:webp-imageio
to your application - The WebP reader and writer can be used like any other Image I/O reader and writer.
Decoding
WebP images can be decoded using default settings as follows.
BufferedImage image = ImageIO.read(new File("input.webp"));
To customize the WebP decoder settings you need to create instances of ImageReader and WebPReadParam.
// Obtain a WebP ImageReader instance
ImageReader reader = ImageIO.getImageReadersByMIMEType("image/webp").next();
// Configure decoding parameters
WebPReadParam readParam = new WebPReadParam();
readParam.setBypassFiltering(true);
// Configure the input on the ImageReader
reader.setInput(new FileImageInputStream(new File("input.webp")));
// Decode the image
BufferedImage image = reader.read(0, readParam);
Encoding
Encoding is done in a similar way to decoding.
You can either use the Image I/O convenience methods to encode using default settings.
// Obtain an image to encode from somewhere
BufferedImage image = ImageIO.read(new File("input.png"));
// Encode it as webp using default settings
ImageIO.write(image, "webp", new File("output.webp"));
Or you can create an instance of ImageWriter and WebPWriteParam to use custom settings.
// Obtain an image to encode from somewhere
BufferedImage image = ImageIO.read(new File("input.png"));
// Obtain a WebP ImageWriter instance
ImageWriter writer = ImageIO.getImageWritersByMIMEType("image/webp").next();
// Configure encoding parameters
WebPWriteParam writeParam = new WebPWriteParam(writer.getLocale());
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionType(p.getCompressionTypes()[WebPWriteParam.LOSSLESS_COMPRESSION]);
// Configure the output on the ImageWriter
writer.setOutput(new FileImageOutputStream(new File("output.webp")));
// Encode
writer.write(null, new IIOImage(image, null, null), writeParam);
Compiling
Compiling the native library for Java SE
- Install CMake 2.8 or newer. CMake can be downloaded from www.cmake.org or installed using your systems package manager.
- Install VS 2017 Community and make sure the C++/Cmake dev tools modules are installed
- Create a directory called
build
in the root of the project - Open a terminal and navigate to the newly created 'build' directory
- Run
cmake ..
in the 'build' directory to generate the build scripts for your system. On Windows 64 bit runcmake -DCMAKE_GENERATOR_PLATFORM=x64 ..
to get a 64 bit dll. cmake --build . --config Release
to compile the library- The compiled library can be found under the directory
build/src/main/c
- Copy the compiled library to
src/main/resources/native/$platform/$bits
Compiling the native library for Android
- Install the Android NDK.
- Run ndk-build in the
src/android
directory - After completion
libwebp-imageio.so
can be found undersrc/android/libs/<abi>
Compiling the Java library
Using Maven
- Run
mvn clean test
in the root of the project - The compiled Java library can be found under the
build
directory - Run
mvn release:prepare release:perform -Prelease -Darguments="-Dgpg.passphrase=secret123 -DstagingDescription=sambox"
to upload to OSS Nexus, then login and publish to Maven Central
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK