JavaDemo-java Thumbnailsを使用して画像を処理

7162 ワード

thumbnailatorはグーグルが画像を処理するオープンソースツールクラスで、画像をスケールしたり、回転したり、圧縮したり、カットしたり、透かしを追加したり、フォーマットを変換したりすることができます.
参照api:http://coobird.github.io/thumbnailator/javadoc/0.4.8/net/coobird/thumbnailator/package-summary.html
maven導入:

	    net.coobird
	    thumbnailator
	    0.4.8
	

基本使用Demo:
/**
 * 2019 4 17   10:51:07
 */
package testThumbnailator;

import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;

/**
 * @author xinwenfeng
 *
 */
public class TestThumbnailator {
	
	//API  :http://coobird.github.io/thumbnailator/javadoc/0.4.8/net/coobird/thumbnailator/package-summary.html

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			Thumbnails.of("BL_pre.jpg")
				.sourceRegion(Positions.CENTER, 500, 500)
//				.size(200, 300)
//				.width(100)
//				.height(200)
//				.forceSize(400, 400)
				.scale(0.8d)
//				.scale(0.5d, 0.8d)
//				.keepAspectRatio(false)
//				.rotate(90d)
				.watermark(Positions.CENTER, ImageIO.read(new File("watermark.png")), 0.8f)
				.outputQuality(0.75f)
				.outputFormat("JPEG")
//				.asBufferedImage()
				.toFile("out.jpeg");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

原図:
JavaDemo——java使用Thumbnails处理图片_第1张图片
ウォーターマーク:
JavaDemo——java使用Thumbnails处理图片_第2张图片
処理後:
JavaDemo——java使用Thumbnails处理图片_第3张图片
注意:処理する画像は、サイズ、size、width、height、forcesize、scaleを指定する必要があります.同じタイプのプロパティを繰り返し設定することはできません.属性設定によっては反発する場合があります.
1.ソース画像を読み込む
複数のファイルまたはフォルダを一括処理できます.
Thumbnails. of(BufferedImage... images)は、BufferedImageからソースを読み込む.
Thumbnails. of(File... files)ファイルまたはフォルダからソースを読み込む.
Thumbnails. of(InputStream... inputStreams)ストリームからソースを読み込む.
Thumbnails. of(String... files)  
Thumbnails. of(URL... urls)  
2.サイズを設定し、比例または引張り
. size(int width, int height)は比例して、原図をsizeサイズで満たす.
. width(int width)幅を設定し、高い割合で設定します.
. height(int height)は高さを設定し、幅は比例する.
. forceSize(int width, int height)幅の高さを設定し、比例しないで、設定した幅の高さに従って引張ります.
. scale(double scale)は比例で拡大縮小し、0~1は縮小し、1元の割合、>1は拡大する.
. scale(double scaleWidth, double scaleHeight)長さと幅はそれぞれ比例して設けられ、延伸する.
. scalingMode(ScalingMode config)スケーリングモード(ScalingMode列挙BICUBIC、BILINEAR、PROGRESSIVE_BILINEAR);
. keepAspectRatio(boolean keep)は比例するかどうかを設定し、falseは比例しない.
注意:size、width/height、scale、forceSizeは併用できません.sizeはwidth+heightに相当する.forceSizeはロングモデル+keepAspectRatio=falseを設定することに相当するので、forceSizeは他のロングモデル属性、keepAspectRatioと併用することはできません.
3.クリップ
. sourceRegion(int x, int y, int width, int height)原図を切り取り、座標x,yを開始し、幅width高さheightの画像を切り取り、xを右に正、yを下に正、width(右)とheight(下)を0より大きくしなければならない.
. sourceRegion(Position position, int width, int height)原図を切り取り、領域位置positionは、Positionsが列挙した9つの位置またはPositionインタフェースを実装する実装クラスを使用することができる.
. sourceRegion(Position position, Size size)  
. sourceRegion(Rectangle region)  
. sourceRegion(Region sourceRegion)  
. crop(Position position)生成されたサムネイルをトリミングし、size設定に従ってトリミングする.
4.回転
. rotate(double angle)回転角度は、時計回りに正である.
5.透かし
. watermark(BufferedImage image)中心位置50%透明度設定透かし;
. watermark(BufferedImage image, float opacity)中心位置、opacityの不透明度に透かしを設定する(0.0<=opacity<=1.0);
. watermark(Position position, BufferedImage image, float opacity) position位置で、opacity不透明度に透かしを設定します.
. watermark(Watermark w)  
6.品質
. outputQuality(double quality)質量0.0<=quality<=1.0;
. outputQuality(float quality)  
7.出力フォーマット
. outputFormat(String format)出力フォーマット(ImageIO.getWriterFormatNames() 使用可能),[JPG,jpg,bmp,BMP,gif,GIF,WBMP,png,PNG,wbmp,jpeg,JPEG];
. outputFormatType(String formatType)  
. useOriginalFormat()は原図フォーマットを使用する.
8.出力画像
. asBufferedImage()は、BufferedImageオブジェクトを返します.
. asBufferedImages()は、複数のBufferedImageオブジェクトを返す.
. asFiles(Rename rename)はファイルリストを返し、名前変更規則に従ってファイル(Rename抽象クラス属性:Rename.NO_CHANGE名は変更せず、Rename.PREFIX_DOT_THUMBNAIL名プレフィックス「thumbnail.」Rename.PREFIX_HYPHEN_THUMBNAIL名接頭辞「thumbnail-」,Rename.SUFFIX_DOT_THUMBNAIL名接尾辞".thumbnail",Rename.SUFFIX_HYPHEN_THUMBNAIL名接尾辞"-thumbnail");
. asFiles(File destinationDir, Rename rename) , は、指定されたディレクトリに生成される(フォルダが存在する).
. asFiles(Iterable iterable)  
. toFile(File outFile)は返されず、ファイルに書き込まれます(接尾辞名がなければ自動的に追加されます.以下同じです).
. toFile(String outFilepath)  
. toFiles(File destinationDir, Rename rename)戻ることなく、名前変更規則に従ってフォルダに生成される.
. toFiles(Iterable iterable)  
. toFiles(Rename rename)  
. toOutputStream(OutputStream os)戻ることなくoutputStreamに書き込みます.
. toOutputStreams(Iterable extends OutputStream> iterable)  
. allowOverwrite(boolean allowOverwrite)既存のファイルを上書きするかどうかを設定します(toFile、toFiles、asFilesにのみ有効).
 
その他の方法と機能はapiを参照してください.