准备阶段
原图(来源于网络)
PS处理后的模板图
待合成图片
图片合成
基本步骤
读取模板图和待合成图,调整待合成图的尺寸、旋转角度、亮度、对比度;
创建一个与模板图尺寸一致的空白图像;
创建
Graphics2D
对象,通过Graphics2D
对象的drawImage()
方法将待合成图和模板图绘制进空白图像的指定位置(需要注意图层顺序,先绘制待合成图,后绘制模板图);输出空白图像(合成后的图像)到本地。
代码
图片尺寸调整、旋转使用到了 Thumbnailator
, 需添加 Maven
依赖
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
/** * 横坐标 */ private static final int x = 457; /** * 纵坐标 */ private static final int y = 295; /** * 旋转角度 */ private static final double angle = 16; /** * 缩放比例 */ private static final double scale = 0.18; /** * 图片合成 * * @param imagePath 待合成的图片路径 * @param outPath 合成后的图片输出路径 * @throws IOException */ private static void synthesis(String imagePath, String outPath) throws IOException { // 模板图 BufferedImage template = ImageIO.read(new File("D:\\local\\images\\template.png")); // 待合成图 BufferedImage image = ImageIO.read(new File(imagePath)); // 调整待合成图的尺寸和旋转角度 image = Thumbnails.of(image).scale(scale).rotate(angle).asBufferedImage(); // 合成后的图 BufferedImage result = new BufferedImage(template.getWidth(), template.getHeight(), template.getType()); Graphics2D graphics2D = result.createGraphics(); // 先画待合成图,后画模板图,这样就能将待合成图放置在模板图的下层 graphics2D.drawImage(image, x, y, null); graphics2D.drawImage(template,0,0, null); graphics2D.dispose(); ImageIO.write(result, "png", new File(outPath)); }
运行代码
public static void main(String[] args) throws IOException { synthesis("D:\\local\\images\\weixin_payment_code.png", "D:\\local\\images\\result.png"); }
调整图片亮度、对比度
/** * 调整亮度、对比度 * * @param image */ private static void adjustBrightnessAndContrast(BufferedImage image) { int width = image.getWidth(); int height = image.getHeight(); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { Color color = new Color(image.getRGB(x, y)); int red = calculateColor(color.getRed()); int green = calculateColor(color.getGreen()); int blue = calculateColor(color.getBlue()); color = new Color(red, green, blue); image.setRGB(x, y, color.getRGB()); } } } /** * 亮度,取值范围[-1,1] */ private static final double BRIGHTNESS = 0; /** * 对比度,取值范围[-1,1] */ private static final double CONTRAST = -0.5; /** * 计算亮度、对比度颜色值 * * @param color 原颜色值 * @return 返回计算后的颜色值 */ private static int calculateColor(int color) { color = (int)((color - 127.5 * (1 - BRIGHTNESS)) * Math.tan((45 + 44 * CONTRAST) / 180 * Math.PI) + 127.5 * (1 + BRIGHTNESS)); return getColor(color); } /** * 获取范围内的颜色值,[0,255] * * @param color * @return */ private static int getColor(int color) { return color > 255 ? 255 : color < 0 ? 0 : color; }
在处理待合成图片的尺寸和旋转角度后调用 adjustBrightnessAndContrast()
方法调整亮度和对比度
... // 调整待合成图的尺寸和旋转角度 image = Thumbnails.of(image).scale(scale).rotate(angle).asBufferedImage(); // 调整待合成图片的亮度、对比度 adjustBrightnessAndContrast(image); ...
重新运行代码
以上がJava は画像処理と P ピクチャをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
