自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java ImageIO圖像合并效率測試

開發(fā) 后端
通過純Java的方式往一張底圖(地圖)上添加小圖片(布點),發(fā)現(xiàn)效果并不理想。下面作者將解說通過Jmagick嘗試圖像合并,利用了ImageMagick的命令來調(diào)用命令合并圖像的方式。

通過純Java的方式往一張底圖(地圖)上添加小圖片(布點),發(fā)現(xiàn)效果并不理想。

何為純java方式?就是說這些操作不需要依賴于c/c++庫,具有良好的跨平臺性,要求不僅僅能運行在Windows、Linux、Unix三大平臺之上,也可以用作Android等移動平臺之上。

下面是往一張底圖上添加小圖片(即圖像合并)的測試的數(shù)據(jù):

 

合并小圖數(shù)量

測試次數(shù)

100(張)

1000(張)

10000(張)

耗時(毫秒)

第1次

2003

15334

153010

第2次

1792

15200

153340

第3次

1869

15236

152673

第4次

1747

15903

154978

第5次

1871

16028

156506

第6次

1793

15545

154854

平均耗時(毫秒)

 

1845.833

15541

154226.8

換算為秒

 

1.845833

15.541

154.2268

往一張底圖上合并小圖100張平均耗時    1.845833秒,

往一張底圖上合并小圖1000張平均耗時  15.541秒,

往一張底圖上合并小圖10000張平均耗時       154.2268秒。

感覺這樣的效率還是太低了,無法滿足數(shù)以萬計的底圖布點需求。據(jù)說,一段高效的c++程序完成數(shù)以萬計的地圖布點任務也就需要大概一兩秒的時間(聽一位頗有經(jīng)驗的高手說的,本人未曾嘗試)。

這次終于感受到java和c/c++在效率上的差距了!

那么是不是要犧牲跨平臺性了,用Jmagick嘗試一下?此問題有待討論…

Jmagick嘗試圖像合并,利用了ImageMagick的命令來調(diào)用命令合并圖像的方式

  1. <span style="white-space:pre">  </span>public void compositeImageList(List additionImageList,String srcImagePath,String toImagePath){  
  2.         /*  
  3.          *命令格式:composite -geometry +100+150 additionImagePath srcImagePath toImagePath   
  4.          *將圖像additionImagePath附加在圖像srcImagePath上的100,150坐標處,輸出為toImagePath圖像  
  5.          */ 
  6.         //String command = "composite -geometry +100+150 D:/test/fileSource/007.png D:/test/fileSource/002.jpg D:/test/desk/rose-002.png";  
  7.         if(additionImageList!=null){  
  8.             System.out.println(additionImageList.size());  
  9.             for(int i=0;i<additionImageList.size();i++){  
  10.                 String[] additionImageInfo = (String[]) additionImageList.get(i);  
  11.                 int x = Integer.parseInt(additionImageInfo[0]);  
  12.                 int y = Integer.parseInt(additionImageInfo[1]);  
  13.                 String additionImagePath = additionImageInfo[2];  
  14.                 StringBuffer command = new StringBuffer("");  
  15.                 command.append("composite -geometry ");  
  16.                 command.append("+"+x+"+"+y+" ");  
  17.                 command.append(additionImagePath+" ");  
  18.                 command.append(srcImagePath+" ");  
  19.                 command.append(toImagePath);  
  20.                 System.out.println(command);  
  21.                 String[] str = {command.toString()};  
  22.                 JmagickTest.exec(str);  
  23.             }  
  24.         }  
  25.     } 
  1. public static void main(String[] args) {  
  2.     JmagickTest obj = new JmagickTest();//調(diào)用合并圖像方法所在的類  
  3.     try {  
  4.         String additionImagePath = "D:/test/fileSource/007.png";  
  5.         List additionImageList = new ArrayList();  
  6.         for(int i = 0;i<100;i++){  
  7.             Random random = new Random();  
  8.             int x = random.nextInt(760);  
  9.             int y = random.nextInt(1020);  
  10.             String[] additionImageInfo = {x+"",y+"",additionImagePath};   
  11.             additionImageList.add(additionImageInfo);  
  12.         }  
  13.         String srcImagePath = "D:/test/fileSource/004.jpg";  
  14.         String toImagePath = "D:/test/fileSource/004.jpg";  
  15.         long start = System.currentTimeMillis();  
  16.         obj.compositeImageList(additionImageList, srcImagePath, toImagePath);  
  17.         long end = System.currentTimeMillis();  
  18.         System.out.println(end - start);  
  19.     } catch (Exception e) {  
  20.         e.printStackTrace();  
  21.     }  

以下是測試的數(shù)據(jù):

圖像數(shù)量 合并耗費時間(ms)

1 ---- 140

10 ---- 1419

100 ---- 13912

1000 ---- 137965

10000 ---- 1392095

 

二者對比,發(fā)現(xiàn)以ImageMigick命令合并圖像的方式,效率明顯低于JDK 的ImageIO處理方式,并且在跨平臺上也遜色于純java的方式。

原文鏈接:http://blog.csdn.net/hu_shengyang/article/details/7317510

【編輯推薦】

  1. Java類變量和成員變量初始化過程
  2. JavaScript表格組件加載速度測試
  3. 5個讓人激動的Java項目
  4. Java并行編程:從并行任務集獲取反饋
  5. 不再糾結(jié)Java中的String類

 

責任編輯:林師授 來源: hu_shengyang的博客
相關推薦

2024-12-20 12:30:00

Python'|'代碼

2019-05-10 11:35:21

Windows 10Contort圖像

2024-12-02 18:16:56

2011-08-23 18:00:00

lua 腳本測試C

2011-07-27 17:22:10

mysql極限測試索引

2010-04-16 16:12:51

jdbc分頁

2022-12-29 08:43:43

項目接口請求

2010-04-01 14:51:52

Visual Stud

2010-05-31 16:46:40

2022-06-30 09:20:32

單元測試測試

2023-01-26 11:29:20

Java單元測試

2011-06-20 10:35:29

MySQL

2024-11-25 17:00:13

2011-12-23 14:28:00

Java

2024-06-03 07:55:00

2019-10-26 22:43:42

AI移動開發(fā)測試

2015-11-02 17:11:38

RelProxyJava開發(fā)效率

2012-02-07 16:29:37

復合一體機評測
點贊
收藏

51CTO技術(shù)棧公眾號