欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javacv-ffmpeg ProcessBuilder批量旋轉(zhuǎn)圖片方式

 更新時(shí)間:2024年09月24日 16:09:42   作者:smileNicky  
為了批量處理大量圖片的旋轉(zhuǎn),可以使用javacv-ffmpeg結(jié)合ProcessBuilder,首先在maven配置文件中添加ffmpeg及javacpp依賴,javacpp支持調(diào)用C/C++方法,而ffmpeg基于C語言,使用ProcessBuilder創(chuàng)建進(jìn)程調(diào)用ffmpeg方法

javacv-ffmpeg ProcessBuilder批量旋轉(zhuǎn)圖片

javacv-ffmpeg ProcessBuilder實(shí)現(xiàn)對圖片的旋轉(zhuǎn),最近需要處理很多圖片,量有點(diǎn)多,所以不能一個(gè)一個(gè)去編輯旋轉(zhuǎn)圖片

寫一個(gè)工具類,實(shí)現(xiàn)對圖片的旋轉(zhuǎn)

maven配置文件,加上對ffmpeg的依賴,由于ffmpeg依賴cpp,所以加上javacpp,javacpp是可以支持調(diào)用c/c++方法的庫。

加上<classifier>標(biāo)簽,因?yàn)?code>ffmpeg是基于c語言編寫的,在不同平臺上的編譯結(jié)果不同,所以這個(gè)標(biāo)簽指定一下平臺的類型

<dependency>
     <groupId>org.bytedeco</groupId>
     <artifactId>javacpp</artifactId>
     <version>1.5.6</version>
     <classifier>windows-x86_64</classifier>
 </dependency>

 <dependency>
     <groupId>org.bytedeco</groupId>
     <artifactId>ffmpeg-platform</artifactId>
     <version>4.4-1.5.6</version>
 </dependency>

如果不想引入兩個(gè)jar,可以直接引入javacv-platform,但是這個(gè)會引入其它的依賴

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.5</version>
</dependency>

這里使用jdk中的ProcessBuilder 用于創(chuàng)建操作系統(tǒng)進(jìn)程來運(yùn)行程序,ProcessBuilder 是jdk提供的用于創(chuàng)建操作系統(tǒng)進(jìn)程的類,

使用

Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);

支持對ffmpeg(c語言編寫)方法的調(diào)用

package com.example.common.util.file;

import org.bytedeco.javacpp.Loader;
import java.text.MessageFormat;

public class PictureProcess {

    /**
     * 旋轉(zhuǎn)
     *
     * @Date 2024/08/27 15:46
     * @Param imagePath 圖片地址
     * @Param outputPath 輸出地址
     * @Param angle 角度
     * @return java.lang.String 圖片地址
     */
    public static String rotate(String imagePath, String outputPath , Integer angle) throws Exception {
        String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
        ProcessBuilder builder =
                new ProcessBuilder(
                        ffmpeg,
                        "-i",
                        imagePath,
                        "-vf",
                        MessageFormat.format("rotate=PI*{0}/180", String.valueOf(angle)),
                        "-y",
                        outputPath);
        builder.inheritIO().start().waitFor();
        return outputDir;
    }
}

介紹一下弧度的計(jì)算公式

弧度= 角度 * Math.PI / 180 PI*{0}/180李的{0}是占位符,來傳入角度的值

寫個(gè)測試類

將文件夾里的所有圖片都旋轉(zhuǎn)90度

@Test
public void testProcess() {
    File file = new File("D:\\picture");
    File[] files = file.listFiles();
    String targetPath = "D:\\picture_NEW";
    for (File file1 : files) {
        System.out.println(rotate(file1.getPath(), targetPath +"/"+ file1.getName(), 90));
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于SpringBoot中的跨域問題

    關(guān)于SpringBoot中的跨域問題

    這篇文章主要介紹了關(guān)于SpringBoot中的跨域問題,同源策略是由Netscape提出的一個(gè)著名的安全策略,它是瀏覽器最核心也最基本的安全功能,現(xiàn)在所有支持JavaScript的瀏覽器都會使用這個(gè)策略,需要的朋友可以參考下
    2023-08-08
  • Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf

    這篇文章主要介紹了Springboot如何根據(jù)docx填充生成word文件并導(dǎo)出pdf問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java使用Thread創(chuàng)建多線程并啟動操作示例

    Java使用Thread創(chuàng)建多線程并啟動操作示例

    這篇文章主要介紹了Java使用Thread創(chuàng)建多線程并啟動操作,結(jié)合實(shí)例形式分析了Java基于Thread類的多線程定義與啟動簡單操作技巧,需要的朋友可以參考下
    2018-06-06
  • SpringBoot集成Redisson操作Redis的實(shí)現(xiàn)方法

    SpringBoot集成Redisson操作Redis的實(shí)現(xiàn)方法

    Redisson是一個(gè)用于Java的Redis客戶端,它提供了在分布式環(huán)境下操作Redis數(shù)據(jù)庫的簡單、高效的方式,本文主要介紹了SpringBoot集成Redisson操作Redis的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例

    Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例

    這篇文章主要介紹了Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    這篇文章主要介紹了解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理

    SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理

    軟件開發(fā)中經(jīng)常有開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境,而且一般這些環(huán)境配置會各不相同,本文主要介紹了SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理,感興趣的可以了解一下
    2024-01-01
  • springboot集成JWT之雙重token的實(shí)現(xiàn)

    springboot集成JWT之雙重token的實(shí)現(xiàn)

    本文主要介紹了springboot集成JWT之雙重token的實(shí)現(xiàn),前端使用accessToken進(jìn)行登錄和驗(yàn)證,后端使用refreshToken定期更新accessToken,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Java 高并發(fā)八:NIO和AIO詳解

    Java 高并發(fā)八:NIO和AIO詳解

    本文主要介紹Java 高并發(fā)NIO和AIO 的知識,這里整理了詳細(xì)的資料,并詳細(xì)介紹了 1. 什么是NIO 2. Buffer 3. Channel 4. 網(wǎng)絡(luò)編程 5. AIO的知識,有需要的小伙伴可以參考下
    2016-09-09
  • SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程詳解

    SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程詳解

    這篇文章主要介紹了SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05

最新評論