使用 Java 将图像文件转换为 GIF 或 WebP 格式

发表于:2022-11-10 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:qaseven    来源:今日头条

  了解如何将数十种常见的图像文件类型(包括但不限于 PNG 和 JPG)分别转换为 GIF 和 WebP 格式。
  如果我们准备在线为特定目的重新格式化图像,我们选择的新格式需要准确反映我们设想的用例。否则,我们会在不经意间扼杀我们自己的效率,最重要的是,冒着降低网页加载速度的风险。对于大多数文件格式选择也是如此:我们不会使用 Microsoft Word 创建电子表格,也不会使用 Excel 撰写论文(尽管从技术上讲两者都可以)。
  选择使用哪种图像格式需要我们考虑我们期望该文件服务的确切目的。虽然我们在网上遇到的最普遍的格式——即JPG 和 PNG——为它们各自的用例提供了众所周知的好处,但它们在某些关键领域也存在不足。例如,虽然 JPG 格式由于其高度压缩(允许网页运行得更快)而被广泛用于网站页面,但这种压缩程度会牺牲大量的图像质量,我们可能并不总是愿意失去. 虽然 PNG 是一种具有内置透明度功能的无损格式——非常适合在纯色背景上显示图形、徽标和插图等内容——但它明显缺乏适应常见在线用例(如图像动画)的能力当需要时。
  对于我们更专业的格式要求,我们可以求助于其他常见的图像格式——无论是旧的还是新的——来实现我们的目标。GIF 格式已经有 30 多年的历史了——它比最初的万维网还要早——但它独特地允许创建基本的逐帧动画,并且它还允许网页以更高的速度加载这些动画速度比同类方法(例如,传统的视频插件)可以。 WebP 格式——由谷歌在 10 多年前创建——足够新,它仍然缺乏与许多网站的上传兼容性,但它的优势是不可否认的:它不仅比 JPG 提供超过 20% 的压缩率,而且PNG,但它允许有损和无损压缩,确保我们并不总是需要在图像质量和网页加载速度之间进行选择。
  鉴于这些常见图像格式的不同用例,格式之间的转换是许多内容专业人员的日常需求,这种需求鼓励采购能够大规模高效执行转换的服务。下面,我将演示如何利用两种 API 解决方案,帮助将数十种常见图像文件类型(包括但不限于 PNG 和 JPG)分别转换为 GIF 和 WebP 格式。
  示范
  下面,我提供了 Java 代码示例来帮助您构建对上述两种图像格式转换 API 解决方案的 API 调用。此外,我还提供了帮助您使用 Maven 或 Gradle 安装图像转换 API 客户端的说明(取决于您的偏好)。
  要使用 Maven 开始 API 客户端安装阶段,我们的第一步是在 pom.xml 中添加对存储库的引用:
  <repositories>
  <repository>
  <id>jitpack.io</id>
  <url>https://jitpack.io</url>
  </repository>
  </repositories>
  之后,我们需要添加以下依赖引用,这将允许 JitPack 动态编译库:
  <dependencies>
  <dependency>
  <groupId>com.github.Cloudmersive</groupId>
  <artifactId>
  Cloudmersive.APIClient.Java</artifactId>
  <version>v4.25</version>
  </dependency>
  </dependencies>
  要使用Gradle安装,我们需要首先将以下代码段添加到根 build.gradle(在存储库的末尾):
  allprojects {
  repositories {
  ...
  maven { url 'https://jitpack.io' }
  }
  }
  然后,总结一下,我们需要在 build.gradle 中添加依赖项:
  dependencies {
  implementation '
  com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25'
  }
  安装步骤完成后,我们现在可以为每个 API 解决方案添加导入,然后直接调用它们各自的函数。在我们这样做之前,我想快速指出,在下面提供的每个函数中,都有一个身份验证字段(在导入下方,由代码注释指示)捕获 API 密钥输入。在 Cloudmersive 网站上注册免费层 API 密钥后,您只需将 API 密钥字符串复制并粘贴到相应字段中,即可完成API 密钥身份验证步骤。
  要将图像转换为 GIF 格式,我们将调用以下函数。我们需要做的就是在imageFile字段中包含我们的图像文件路径,然后我们就完成了:
  // 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.ConvertApi;
  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");
  ConvertApi apiInstance = new ConvertApi();
  File imageFile = new File("/path/to/inputfile"); // File | Image file to perform the operation on. Common file formats such as PNG, JPEG are supported.
  try {
  byte[] result = apiInstance.convertToGif(imageFile);
  System.out.println(result);
  } catch (ApiException e) {
  System.err.println("Exception when calling ConvertApi#convertToGif");
  e.printStackTrace();
  }
  要将图像转换为 WebP 格式,我们将调用以下函数。就像以前一样,只需在imageFile字段中包含您的文件路径,您就完成了:
  // 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.ConvertApi;
  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");
  ConvertApi apiInstance = new ConvertApi();
  File imageFile = new File("/path/to/inputfile"); // File | Image file to perform the operation on. Common file formats such as PNG, JPEG are supported.
  try {
  byte[] result = apiInstance.convertToWebP(imageFile);
  System.out.println(result);
  } catch (ApiException e) {
  System.err.println("Exception when calling ConvertApi#convertToWebP");
  e.printStackTrace();
  }
  每个 API 解决方案都可以从数十种常见的图像格式进行转换。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号