文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 12:41

关注

如果我们准备在线为特定目的重新格式化图像,我们选择的新格式需要准确反映我们设想的用例。否则,我们会在不经意间扼杀我们自己的效率,最重要的是,冒着降低网页加载速度的风险。对于大多数文件格式选择也是如此:我们不会使用 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
</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 解决方案都可以从数十种常见的图像格式进行转换。为了您的方便,我在这里提供了兼容输入格式的完整列表:

AAI,艺术,ARW,AVS,BPG,BMP,BMP2,BMP3,BRF,CALS,CGM,CIN,CMYK,CMYKA,CR2,CRW,CUR,CUT,DCM,DCR,DCX,DDS,DIB,DJVU,DNG, DOT、DPX、EMF、EPDF、EPI、EPS、EPS2、EPS3、EPSF、EPSI、EPT、EXR、FAX、FIG、FITS、FPX、GIF、GPLT、灰色、HDR、HEIC、HPGL、HRZ、ICO、ISOBRL、 ISBRL6、JBIG、JNG、JP2、JPT、J2C、J2K、JPEG/JPG、JXR、MAT、MONO、MNG、M2V、MRW、MTV、NEF、ORF、OTB、P7、PALM、PAM、PBM、PCD、PCDS、 PCL,PCX,PDF,PEF,PES,PFA,PFB,PFM,PGM,PICON,PICT,PIX,PNG,PNG8,PNG00,PNG24,PNG32,PNG48,PNG64,PNM,PPM,PSB,PSD,PTIF,PWB, RAD、RAF、RGB、RGB、RGF、RLA、RLE、SCT、SFW、SGI、SID、SUN、SVG、TGA、TIFF、TIM、UIL、VIFF、VICAR、VBMP、WDP、WEBP、WPG、X、XBM、 XCF、XPM、XWD、X3F、YCbCr、YCbCrA、YUV

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯