抜粋:https://www.cnblogs.com/larrydpk/p/11967694.html
[ジャワ] Thumbnailatorの使用の例は、サムネイル(サイズ変更、回転、クロップ、ウォーターマーク)を生成します
1つの需要
テストのために登録するいとこの息子の必要性は、システムが何より30キロバイトアップロード写真よりも必要とせず、今の携帯電話は容易に数MBを破っており、それの写真を取得する方法の唯一の30キロバイト?
簡単な方法は、次に、コンピュータ上で画像を縮小することである小さな画像をスクリーンショットが、現在高解像度のコンピュータ画面ではなく、簡単なスクリーンショットのサイズを制御するために、異なる画像フォーマットで同じ解像度、サイズが大きく変化します。マイクロ文字のスクリーンショットツールを試してみました、映像の出力が比較的大きいです。そして、アプローチを放棄しました。
もう一つは、他のツールによって処理されます。絵が特定のサイズよりも小さい場合、画像はオンラインのウェブサイトや携帯電話のソフトウェア圧縮検索、圧縮が無効ました。私たちは他のツールを探し続けた場合、それは単に時間とイライラの無駄なので、アプローチを放棄しました。
最後に、または元の画像の圧縮率に独自のコードを記述したコードの2つのまたは3行を取得し、Thumbnailatorライブラリを使用し、29キロバイトとなりました。
あなたのサムネイル何2を行うことができますか?
サムネイルは非常に汎用性の高い、アバター、画像メッセージ、写真や他の商品と同様に、サムネイルを使用されますされています。
新しいマイクロ手紙の友人を持っている場合たとえば、あなたがこの絵は、サムネイルの元画像よりも小さい始め、彼の頭を見ることができます。そして、あなたは、元の画像をダウンロード与える表示オリジナル微信クライアント上でクリックしたとき。あなたは明確な元の画像を見に行くだろう、みんなの頭がに興味を持っている必要はありませんので、小さなサムネイルが会うことができてきました。これは、ネットワーク伝送の負担を軽減、応答時間を短縮することができます。
マイクロチャネル転送の画像と動画と同じ方法で、あなたは、元のビデオの再生を表示したり、大きなファイルに転送する]をクリックし、あなたが比較的小さなプレビューを渡すことができます。
オープンソースのライブラリの3つのサムネイル
オープンソースのライブラリの多くのサムネイル:
(1)Thumbnailator
GitHubの:https://github.com/coobird/thumbnailator
外部ライブラリ、軽量、高効率、あらゆるプラットフォームに適用可能な支持体には、拡大縮小することを、回転、傍受、透かしのサポートに依存しないでください。
(2)Imgscalr
GitHubの:https://github.com/rkalla/imgscalr
すべてのJava 2Dに基づいて、外部ライブラリ、軽量、高効率、支持体には、スケーリングすることを任意のプラットフォームに適用可能な、回転、傍受に依存しない、透かしをサポートしていません。
この記事のThumbnailatorに主に使用し、最新バージョンは、次のようにMavenの導入、0.4.8です。
<dependency>
<groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
一般的な操作4
4.1サイズのスケーリングを指定します
元の4:3のアスペクト比の画像は、以下のように、(画像は、サイトはアートワークをアップロードすることができない大きすぎる)4032x3024です。
ときに指定したサイズのズームモード、デフォルトでは、元の比率を維持することです。
//参数小且比例与原比例一样
//则按参数输出结果
Thumbnails.of(originalPic)
.size(400, 300)
.toFile(picturePath + "climb-up.size.400X300.jpeg"); //参数大且比例不等 //则按比例放大,取最小的值 Thumbnails.of(originalPic) .size(4400, 3400) .toFile(picturePath + "climb-up.size.4400X3300.jpeg"); //参数小且比例不等 //则按比例缩小,取最小的值 Thumbnails.of(originalPic) .size(200, 300) .toFile(picturePath + "climb-up.size.200X150.jpeg"); //不保持比例 //则按参数输出结果 Thumbnails.of(originalPic) .size(200, 300) .keepAspectRatio(false) .toFile(picturePath + "climb-up.size.notKeepRatio.200X300.jpeg"); //强制设置大小 //则按参数输出结果,与上个例子一样 Thumbnails.of(originalPic) .forceSize(200, 300) .toFile(picturePath + "climb-up.forceSize.200X300.jpeg");
これは二つの結果を示しています。
(1)size(200, 300)
3:、結果は200×150の画像、または4の比です。
(2) forceSize(200, 300)
、結果は、元の異なる割合として、200X300画像であり、そこに変形されます。
スケール4.2
同じ時間幅と高ズーム比でスケーリングすることをいう、以下のコードを参照してください。
//比例小于1,缩小
//宽和高同时缩小为原来的0.1倍
Thumbnails.of(originalPic)
.scale(0.1f)
.toFile(picturePath + "climb-up.scale.403X302.jpeg");
//比例大于1,放大 //宽和高同时放大为原来的1.1倍 Thumbnails.of(originalPic) .scale(1.1f) .toFile(picturePath + "climb-up.scale.4435X3326.jpeg");
4.3回転角度
回転の角度は、角度は時計回り、正のとき、角度が負、反時計回りです。コードは以下の通りであります:
Thumbnails.of(originalPic)
.size(400,300)
.rotate(45)
.toFile(picturePath + "climb-up.rotate.45.jpeg");
以下のように圧縮された画像の結果を回転させることです。
4.4透かしを追加します。
ウォーターマークを追加し、次のように、私たちの例では、また、右上隅に透かし非常に便利です。
Thumbnails.of(originalPic)
.size(2000,1500)
.watermark(Positions.TOP_RIGHT, ImageIO.read(
new File(picturePath + "pkslow.size.400X300.jpeg")), 0.5f) .toFile(picturePath + "climb-up.watermark.jpeg");
プラス写真透かしの後に次のように:
4.5作物
コードは以下の通りであります:
Thumbnails.of(originalPic)
.sourceRegion(Positions.TOP_RIGHT, 1800, 1800)
.size(400, 400)
.toFile(picturePath + "climb-up.crop.jpeg");
結果は以下の通りであります:
バッチ操作で4.6ディレクトリファイル
この機能を使用すると、カタログ内のすべての画像を操作すると、次のように指定した接頭コードがあるとして、出力ファイル名を指定することができ、非常に便利です。
Thumbnails.of(new File("/pictures/201912/").listFiles())
.size(400, 400)
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
次のように操作した後に生成された結果は以下のとおりです。
5まとめ
Thumbnailatorライブラリが簡単に、サポートズーム、回転、トリミング、透かしやその他の機能、およびなし他の依存を動作させるために、それは学習の価値が理解されます。
社会的関心番号へようこそ< 遅いカボチャは、言ったあなたが更新していきます、> ...
より多くの書籍、より多くの共有であり、より書き込み、以上の仕上げより。
1 需求
表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢?
一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏幕分辨率很高,而且截屏大小不好控制;同样分辨率在不同图片格式下,大小也相差很大。试了一下微信截图工具,输出的图片比较大。于是放弃了该办法。
另一个办法是通过其它工具来处理。找了图片在线压缩网站和一款手机软件,发现在图片小于一定大小时压缩无效。如果再继续找其它工具,简直就是折腾且浪费时间,所以也放弃了该办法。
最后,还是自己写个代码把图片按原比例压缩成了29KB,使用Thumbnailator库,两三行代码搞定。
2 缩略图可以做什么?
缩略图是应用极其广泛的,像头像、图片消息、商品图片等,都会用到缩略图。
比如,当你有了一个新的微信好友,你就能看到他的头像,一开始这个头像是一个比原图更小的缩略图。而你点击查看原图时,微信客户端才会给你下载原图。因为你并不会对每个人的头像都感兴趣,都会去查看清晰的原图,一个小小的缩略图已经能满足了。这样可以减轻网络传输的负担,加快响应速度。
微信传图片和视频也是同样的道理,先给你传一个比较小的预览,你点击查看原图或视频播放才给你传更大的文件。
3 缩略图的开源库
缩略图的开源库很多:
(1)Thumbnailator
GitHub:https://github.com/coobird/thumbnailator
不依赖外部库,轻便高效,任何平台适用,支持缩放、旋转、截取,支持水印。
(2)Imgscalr
GitHub:https://github.com/rkalla/imgscalr
すべてのJava 2Dに基づいて、外部ライブラリ、軽量、高効率、支持体には、スケーリングすることを任意のプラットフォームに適用可能な、回転、傍受に依存しない、透かしをサポートしていません。
この記事のThumbnailatorに主に使用し、最新バージョンは、次のようにMavenの導入、0.4.8です。
<dependency>
<groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
一般的な操作4
4.1サイズのスケーリングを指定します
元の4:3のアスペクト比の画像は、以下のように、(画像は、サイトはアートワークをアップロードすることができない大きすぎる)4032x3024です。
ときに指定したサイズのズームモード、デフォルトでは、元の比率を維持することです。
//参数小且比例与原比例一样
//则按参数输出结果
Thumbnails.of(originalPic)
.size(400, 300)
.toFile(picturePath + "climb-up.size.400X300.jpeg"); //参数大且比例不等 //则按比例放大,取最小的值 Thumbnails.of(originalPic) .size(4400, 3400) .toFile(picturePath + "climb-up.size.4400X3300.jpeg"); //参数小且比例不等 //则按比例缩小,取最小的值 Thumbnails.of(originalPic) .size(200, 300) .toFile(picturePath + "climb-up.size.200X150.jpeg"); //不保持比例 //则按参数输出结果 Thumbnails.of(originalPic) .size(200, 300) .keepAspectRatio(false) .toFile(picturePath + "climb-up.size.notKeepRatio.200X300.jpeg"); //强制设置大小 //则按参数输出结果,与上个例子一样 Thumbnails.of(originalPic) .forceSize(200, 300) .toFile(picturePath + "climb-up.forceSize.200X300.jpeg");
これは二つの結果を示しています。
(1)size(200, 300)
3:、結果は200×150の画像、または4の比です。
(2) forceSize(200, 300)
、結果は、元の異なる割合として、200X300画像であり、そこに変形されます。
スケール4.2
同じ時間幅と高ズーム比でスケーリングすることをいう、以下のコードを参照してください。
//比例小于1,缩小
//宽和高同时缩小为原来的0.1倍
Thumbnails.of(originalPic)
.scale(0.1f)
.toFile(picturePath + "climb-up.scale.403X302.jpeg");
//比例大于1,放大 //宽和高同时放大为原来的1.1倍 Thumbnails.of(originalPic) .scale(1.1f) .toFile(picturePath + "climb-up.scale.4435X3326.jpeg");
4.3回転角度
回転の角度は、角度は時計回り、正のとき、角度が負、反時計回りです。コードは以下の通りであります:
Thumbnails.of(originalPic)
.size(400,300)
.rotate(45)
.toFile(picturePath + "climb-up.rotate.45.jpeg");
以下のように圧縮された画像の結果を回転させることです。
4.4透かしを追加します。
ウォーターマークを追加し、次のように、私たちの例では、また、右上隅に透かし非常に便利です。
Thumbnails.of(originalPic)
.size(2000,1500)
.watermark(Positions.TOP_RIGHT, ImageIO.read(
new File(picturePath + "pkslow.size.400X300.jpeg")), 0.5f) .toFile(picturePath + "climb-up.watermark.jpeg");
プラス写真透かしの後に次のように:
4.5作物
コードは以下の通りであります:
Thumbnails.of(originalPic)
.sourceRegion(Positions.TOP_RIGHT, 1800, 1800)
.size(400, 400)
.toFile(picturePath + "climb-up.crop.jpeg");
結果は以下の通りであります:
バッチ操作で4.6ディレクトリファイル
この機能を使用すると、カタログ内のすべての画像を操作すると、次のように指定した接頭コードがあるとして、出力ファイル名を指定することができ、非常に便利です。
Thumbnails.of(new File("/pictures/201912/").listFiles())
.size(400, 400)
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
次のように操作した後に生成された結果は以下のとおりです。
5まとめ
Thumbnailatorライブラリが簡単に、サポートズーム、回転、トリミング、透かしやその他の機能、およびなし他の依存を動作させるために、それは学習の価値が理解されます。
社会的関心番号へようこそ< 遅いカボチャは、言ったあなたが更新していきます、> ...
より多くの書籍、より多くの共有であり、より書き込み、以上の仕上げより。