如何在Java中将2个图像合成在一起


是否在寻找一种使您的网站或应用程序更具吸引力的方法?创建引人入胜的图像,以配合您的广告文案,服务产品和项目,是提高内容质量的绝佳方法。合成图像是一种非常受人们欢迎的图像,尤其是在数字时代。合成图像由两个或多个图像组成,将它们合并在一起以创建单个构图。生成的合成图像通常描绘出处于难以置信,不可能或不可能的情况下的人或物体,例如18世纪城市中的21世纪男人或云层中的城堡。该技术的另一种更实际的应用是将风景或背景的照片与通常在技术上或物理上无法实现的照明或其他视觉方面进行整合。

虽然在我们当前的技术驱动世界中,这项技术听起来相对简单,但是当合成图像在1800年代中期首次创建时,情况就完全不同了。艺术家和摄影师开始玩弄分层效果,方法是将照片和绘画实际切割,粘合和并置在一起,以推销并纪念大型社交活动。随着社会进入第一次世界大战时代,该过程利用虚拟现实效果创建了与亲人在一起的士兵场景,并宣传了战争努力。

如今,构建合成图像已经不那么复杂了,可以通过各种数字应用程序和编辑工具来实现。在这个简短的教程中,我们将演示两个可以在Java中用于将两个输入图像合成在一起的API。分层图像到基础图像上。这些工具支持PNG透明度和填充,可用于各种项目或根据需要集成到您的应用程序中。

首先,我们将通过向Maven POM文件添加存储库引用来安装API客户端:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

然后,我们可以添加对依赖项的引用:

<dependencies>
<dependency>
    <groupId>com.github.Cloudmersive</groupId>
    <artifactId>Cloudmersive.APIClient.Java</artifactId>
    <version>v3.90</version>
</dependency>
</dependencies>

现在,我们准备好执行第一个功能,该功能将根据“中心”,“右下”,“左上”等位置将两个图像合成在一起。我们可以将导入内容添加到我们的顶部控制器,并使用以下示例代码调用该函数:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditApi apiInstance = new EditApi();
String location = "location_example"; // String | Location to composite the layered images; possible values are: \"center\", \"top-left\", \"top-center\", \"top-right\", \"center-left\", \"center-right\", \"bottom-left\", \"bottom-center\", \"bottom-right\"
File baseImage = new File("/path/to/inputfile"); // File | Image file to perform the operation on.  Common file formats such as PNG, JPEG are supported.
File layeredImage = new File("/path/to/inputfile"); // File | Image to layer on top of the base image.
try {
    byte[] result = apiInstance.editCompositeBasic(location, baseImage, layeredImage);
    System.out.println(result);

为了使操作成功运行,您需要确保包括以下参数:

  • 位置-合成分层图像的位置;可能的值为:“ center”,“ top-left”,“ top-center”,“ top-right”,“ left-center”,“ center-right”,“ bottom-left”,“ bottom-center”, “右下”。
  • 基本图像-在其上执行操作的图像文件;支持常见的文件格式,例如PNG,JPEG。
  • 分层图像-在基础图像之上逐层图像。
  • API密钥–您的个人API密钥。如果您需要获取个人API密钥,则可以通过在Cloudmersive网站上注册免费帐户来获得;这将通过我们的任何API提供800个每月的调用。 对于下一个功能,我们仍然需要基本图像,分层图像和​​API密钥,但是我们可以输入其他参数来提高分层的精度:

  • 顶部-从基本图像的顶部到分层图像的顶部的所需距离(以像素为单位)。

  • 底部-从基础图像的底部到分层图像的底部的所需距离(以像素为单位)。
  • 左-从基础图像的左侧到分层图像的左侧的所需距离(以像素为单位)。
  • 右–从基础图像的右侧到分层图像的右侧的所需距离(以像素为单位)。
  • 高度–分层图像的所需宽度(以像素为单位)。将height留为空白或0以自动按比例缩放图像。
  • 宽度-分层图像的期望高度(以像素为单位)。将width留为空白或0以自动按比例缩放图像。 重要的是要注意,不建议在单个轴上提供多个参数(例如,顶部和底部),因为每个轴仅使用一个参数。整理好信息后,可以将其添加到以下示例代码中:
// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditApi apiInstance = new EditApi();
File baseImage = new File("/path/to/inputfile"); // File | Image file to perform the operation on.  Common file formats such as PNG, JPEG are supported.
File layeredImage = new File("/path/to/inputfile"); // File | Image to layer on top of the base image.
Integer top = 56; // Integer | Optional; Desired distance in pixels from the top of the base image to the top of the layered image.
Integer bottom = 56; // Integer | Optional; Desired distance in pixels from the bottom of the base image to the bottom of the layered image.
Integer left = 56; // Integer | Optional; Desired distance in pixels from the left side of the base image to the left side of the layered image.
Integer right = 56; // Integer | Optional; Desired distance in pixels from the right side of the base image to the right side of the layered image.

这就是本教程!在将合成图像合并到应用程序,项目和网站中时,请记住,切勿将虚构图像描述为“真实”。他们可以毫不费力地暴露出来,对于个人或相应的公司/品牌来说,这不是一个好看的外观。

除此之外,还可以让您的合成创造力流动!


原文链接:https://codingdict.com/