最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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)建進程調(diào)用ffmpeg方法

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

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

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

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

加上<classifier>標簽,因為ffmpeg是基于c語言編寫的,在不同平臺上的編譯結(jié)果不同,所以這個標簽指定一下平臺的類型

<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>

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

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

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

使用

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;
    }
}

介紹一下弧度的計算公式

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

寫個測試類

將文件夾里的所有圖片都旋轉(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é)

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

相關(guān)文章

  • Spring Boot整合消息隊列RabbitMQ的實現(xiàn)示例

    Spring Boot整合消息隊列RabbitMQ的實現(xiàn)示例

    本文主要介紹了Spring Boot整合消息隊列RabbitMQ的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • mybatis中映射文件(mapper)中的使用規(guī)則

    mybatis中映射文件(mapper)中的使用規(guī)則

    這篇文章主要介紹了mybatis中映射文件(mapper)中的使用規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • springboot2中HikariCP連接池的相關(guān)配置問題

    springboot2中HikariCP連接池的相關(guān)配置問題

    這篇文章主要介紹了springboot2中HikariCP連接池的相關(guān)配置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java?String類和StringBuffer類的區(qū)別介紹

    Java?String類和StringBuffer類的區(qū)別介紹

    這篇文章主要介紹了Java?String類和StringBuffer類的區(qū)別,?關(guān)于java的字符串處理我們一般使用String類和StringBuffer類有什么不同呢,下面我們一起來看看詳細介紹吧
    2022-03-03
  • Java中兩種基本的輸入方式小結(jié)

    Java中兩種基本的輸入方式小結(jié)

    這篇文章主要介紹了Java中兩種基本的輸入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于java swing實現(xiàn)答題系統(tǒng)

    基于java swing實現(xiàn)答題系統(tǒng)

    這篇文章主要為大家詳細介紹了基于java swing實現(xiàn)答題系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • JAVA調(diào)用SAP WEBSERVICE服務(wù)實現(xiàn)流程圖解

    JAVA調(diào)用SAP WEBSERVICE服務(wù)實現(xiàn)流程圖解

    這篇文章主要介紹了JAVA調(diào)用SAP WEBSERVICE服務(wù)實現(xiàn)流程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • JeecgBoot頁面Online報表配置過程(動態(tài))

    JeecgBoot頁面Online報表配置過程(動態(tài))

    文章介紹了如何根據(jù)登錄者角色信息動態(tài)配置報表,并詳細說明了Online報表的配置步驟,包括數(shù)據(jù)源選擇、字段顯示、查詢條件設(shè)置等,同時,文章還涉及了頁面代碼部分,包括依賴引入、用戶信息獲取、參數(shù)配置和form表單配置等
    2026-01-01
  • SpringBoot中六種批量更新Mysql的方式效率對比分析

    SpringBoot中六種批量更新Mysql的方式效率對比分析

    文章比較了MySQL大數(shù)據(jù)量批量更新的多種方法,指出REPLACE INTO和ON DUPLICATE KEY效率最高但存在數(shù)據(jù)風(fēng)險,MyBatis-Plus分批更新較優(yōu),CASE WHEN因循環(huán)多效率較低,建議根據(jù)項目限制選擇合適方案并分批處理以避免SQL阻塞
    2025-07-07
  • 基于HttpServletResponse 相關(guān)常用方法的應(yīng)用

    基于HttpServletResponse 相關(guān)常用方法的應(yīng)用

    本篇文章小編為大家介紹,基于HttpServletResponse 相關(guān)常用方法的應(yīng)用,需要的朋友參考下
    2013-04-04

最新評論

衡山县| 日土县| 楚雄市| 大足县| 崇信县| 寿阳县| 洛浦县| 六盘水市| 白水县| 青海省| 洮南市| 沁源县| 城固县| 交口县| 老河口市| 九龙城区| 肥东县| 文化| 霍山县| 布尔津县| 盘锦市| 新安县| 田阳县| 连平县| 荥阳市| 洞口县| 平果县| 长兴县| 湘乡市| 界首市| 石楼县| 阿瓦提县| 岢岚县| 渭源县| 澄迈县| 虎林市| 陕西省| 白山市| 秭归县| 融水| 高淳县|