JavaDemo-java Thumbnailsを使用して画像を処理
7162 ワード
thumbnailatorはグーグルが画像を処理するオープンソースツールクラスで、画像をスケールしたり、回転したり、圧縮したり、カットしたり、透かしを追加したり、フォーマットを変換したりすることができます.
参照api:http://coobird.github.io/thumbnailator/javadoc/0.4.8/net/coobird/thumbnailator/package-summary.html
maven導入:
基本使用Demo:
原図:
ウォーターマーク:
処理後:
注意:処理する画像は、サイズ、size、width、height、forcesize、scaleを指定する必要があります.同じタイプのプロパティを繰り返し設定することはできません.属性設定によっては反発する場合があります.
1.ソース画像を読み込む
複数のファイルまたはフォルダを一括処理できます.
Thumbnails.
Thumbnails.
Thumbnails.
Thumbnails.
Thumbnails.
2.サイズを設定し、比例または引張り
.
.
.
.
.
.
.
.
注意:size、width/height、scale、forceSizeは併用できません.sizeはwidth+heightに相当する.forceSizeはロングモデル+keepAspectRatio=falseを設定することに相当するので、forceSizeは他のロングモデル属性、keepAspectRatioと併用することはできません.
3.クリップ
.
.
.
.
.
.
4.回転
.
5.透かし
.
.
.
.
6.品質
.
.
7.出力フォーマット
.
.
.
8.出力画像
.
.
.
.
.
.
.
.
.
.
.
.
.
その他の方法と機能はapiを参照してください.
参照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();
}
}
}
原図:
ウォーターマーク:
処理後:
注意:処理する画像は、サイズ、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を参照してください.