iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何进行Java ImageIO图像合并效率测试
  • 530
分享到

如何进行Java ImageIO图像合并效率测试

2023-06-17 11:06:34 530人浏览 安东尼
摘要

这篇文章给大家介绍如何进行Java Imageio图像合并效率测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。通过纯Java的方式往一张底图(地图)上添加小图片(布点),发现效果并不理想。何为纯java方式?就是说这

这篇文章给大家介绍如何进行Java Imageio图像合并效率测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

通过纯Java的方式往一张底图(地图)上添加小图片(布点),发现效果并不理想。

何为纯java方式?就是说这些操作不需要依赖于C/C++库,具有良好的跨平台性,要求不仅仅能运行在windowslinux、Unix三大平台之上,也可以用作Android等移动平台之上。

下面是往一张底图上添加小图片(即图像合并)的测试的数据:

合并小图数量

测试次数

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

感觉这样的效率还是太低了,无法满足数以万计的底图布点需求。据说,一段高效的c++程序完成数以万计的地图布点任务也就需要大概一两秒的时间(听一位颇有经验的高手说的,本人未曾尝试)。

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

那么是不是要牺牲跨平台性了,用Jmagick尝试一下?此问题有待讨论…

Jmagick尝试图像合并,利用了ImageMagick的命令来调用命令合并图像的方式

<span style="white-space:pre">  </span>public void compositeImageList(List additionImageList,String srcImagePath,String toImagePath){                   //String command = "composite -geometry +100+150 D:/test/fileSource/007.png D:/test/fileSource/002.jpg D:/test/desk/rose-002.png";          if(additionImageList!=null){              System.out.println(additionImageList.size());              for(int i=0;i<additionImageList.size();i++){                  String[] additionImageInfo = (String[]) additionImageList.get(i);                  int x = Integer.parseInt(additionImageInfo[0]);                  int y = Integer.parseInt(additionImageInfo[1]);                  String additionImagePath = additionImageInfo[2];                  StringBuffer command = new StringBuffer("");                  command.append("composite -geometry ");                  command.append("+"+x+"+"+y+" ");                  command.append(additionImagePath+" ");                  command.append(srcImagePath+" ");                  command.append(toImagePath);                  System.out.println(command);                  String[] str = {command.toString()};                  JmagickTest.exec(str);              }          }      }
public static void main(String[] args) {      JmagickTest obj = new JmagickTest();//调用合并图像方法所在的类      try {          String additionImagePath = "D:/test/fileSource/007.png";          List additionImageList = new ArrayList();          for(int i = 0;i<100;i++){              Random random = new Random();              int x = random.nextInt(760);              int y = random.nextInt(1020);              String[] additionImageInfo = {x+"",y+"",additionImagePath};               additionImageList.add(additionImageInfo);          }          String srcImagePath = "D:/test/fileSource/004.jpg";          String toImagePath = "D:/test/fileSource/004.jpg";          long start = System.currentTimeMillis();          obj.compositeImageList(additionImageList, srcImagePath, toImagePath);          long end = System.currentTimeMillis();          System.out.println(end - start);      } catch (Exception e) {          e.printStackTrace();      }  }

以下是测试的数据:

图像数量 合并耗费时间(ms)

1 ---- 140

10 ---- 1419

100 ---- 13912

1000 ---- 137965

10000 ---- 1392095

二者对比,发现以ImageMigick命令合并图像的方式,效率明显低于jdk 的ImageIO处理方式,并且在跨平台上也逊色于纯java的方式。

关于如何进行Java ImageIO图像合并效率测试就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行Java ImageIO图像合并效率测试

本文链接: https://www.lsjlt.com/news/288408.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行Java ImageIO图像合并效率测试
    这篇文章给大家介绍如何进行Java ImageIO图像合并效率测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。通过纯Java的方式往一张底图(地图)上添加小图片(布点),发现效果并不理想。何为纯java方式?就是说这...
    99+
    2023-06-17
  • Java如何使用JMeter进行高并发测试
    这篇文章主要介绍了Java如何使用JMeter进行高并发测试,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。软件的压力测试是一种保证软件质量的行为.在金融,电商等领域应用比较普...
    99+
    2023-06-25
  • 如何进行MySQL并行复制测试
    今天就跟大家聊聊有关如何进行MySQL并行复制测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。    对于主从延迟,其实一...
    99+
    2024-04-02
  • 如何进行java 8 forEach测试
    本篇文章为大家展示了如何进行java 8 forEach测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。package staticTest;import java.util.ArrayList;...
    99+
    2023-06-03
  • golang函数的测试与覆盖率如何进行?
    在 go 中,测试和覆盖率对于维护稳定和可靠的代码至关重要。测试通过编写以 test 开头的函数进行,其中包含断言来验证函数的预期输出。运行测试时使用 go test 命令,而测量覆盖率...
    99+
    2024-04-27
    测试 覆盖率 golang
  • Python如何利用ROI进行图像合成
    本篇内容介绍了“Python如何利用ROI进行图像合成”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之前使用seamlessClone来合成...
    99+
    2023-06-20
  • 在进行并行表测试用例时如何推迟测试服务器关闭?
    大家好,今天本人给大家带来文章《在进行并行表测试用例时如何推迟测试服务器关闭?》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!问...
    99+
    2024-04-05
  • Java如何使用jmeter进行压力测试
    本篇内容介绍了“Java如何使用jmeter进行压力测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jmeter测试计划配置:运行bin目...
    99+
    2023-06-20
  • 如何进行ABAP和Java SpringBoot的单元测试
    本篇文章为大家展示了如何进行ABAP和Java SpringBoot的单元测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ABAP在ABAP类里,本地类(Local Class)里用关键字FOR ...
    99+
    2023-06-02
  • 如何进行CentOS yum镜像速度测试记录文件
    这期内容当中小编将会给大家带来有关如何进行CentOS yum镜像速度测试记录文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。CentOS yum安装方式在有网络环境的时候非常方便,选择一个比较快的Ce...
    99+
    2023-06-16
  • Python如何使用cv2.canny进行图像边缘检测
    目录使用cv2.canny进行图像边缘检测阈值对检测结果的影响sobel算子对检测结果的影响范数对检测结果的影响总结使用cv2.canny进行图像边缘检测 CV2提供了提取图像边缘的...
    99+
    2023-01-28
    Python使用cv2.canny cv2.canny图像边缘检测 Python图像
  • 如何利用Go语言进行高效渗透测试
    利用 go 语言进行高效渗透测试:下载并安装 go:https://go.dev/dl/创建 go 项目:go mod init my-penetration-testing-tool安...
    99+
    2024-04-04
    go语言 渗透测试
  • 如何使用PHP进行图像识别和物体检测?
    随着人工智能技术的不断发展,图像识别与物体检测已成为热门的研究方向。而在实践中,PHP作为一种流行的脚本语言,也可以用于图像识别和物体检测。本文将介绍如何使用PHP进行图像识别和物体检测。一、PHP图像处理库在使用PHP进行图像识别和物体检...
    99+
    2023-05-23
    PHP 图像识别 物体检测
  • 如何将 Golang 测试用例的测试覆盖率值与特定阈值进行比较
    php小编香蕉在这篇文章中将向大家介绍如何将 Golang 测试用例的测试覆盖率值与特定阈值进行比较。在软件开发中,测试覆盖率是一个重要的指标,它衡量了测试用例对代码的覆盖程度。通过比...
    99+
    2024-02-09
    overflow
  • Java如何使用junit框架进行代码测试
    这篇文章主要介绍了Java如何使用junit框架进行代码测试的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何使用junit框架进行代码测试文章都会有所收获,下面我们一起来看看吧。我写了一个时间工具类 ...
    99+
    2023-07-05
  • JpaRepository如何实现增删改查并进行单元测试
    目录JpaRepository增删改查进行单元测试项目结构单元测试SpringDataJPA的Repository理解repository抽取扩展理解接下来贴一贴代码JpaRepos...
    99+
    2024-04-02
  • 如何使用Go语言进行高效的性能测试
    go 语言提供了高效的性能测试工具,包括内置的 testing 包,用于编写基准测试。基准测试使用 benchmark 函数定义,并通过 run 函数运行。例如,可以编写一个基准测试来测...
    99+
    2024-05-07
    go语言 性能测试 git
  • Golang开发建议:如何进行高效的性能测试
    Golang是一种快速、强大的编程语言,广泛应用于高性能的后端开发。在进行Golang应用程序的开发过程中,性能测试是非常重要的一环。通过性能测试,我们可以了解系统在不同负载下的表现,发现潜在的性能瓶颈,并对系统进行优化。那么,在Golan...
    99+
    2023-11-22
    性能优化 Golang性能测试 高效测试
  • PHP中如何进行智能图像处理和人脸检测?
    随着人工智能技术不断发展,图像处理和人脸检测应用越来越广泛。PHP作为一门服务器端语言也能够支持这些应用。本文将向您介绍如何通过PHP实现智能图像处理和人脸检测。一、智能图像处理图片压缩高清晰度图片可以提供更好的视觉体验,但其同时也会导致图...
    99+
    2023-05-21
    PHP 智能图像处理 人脸检测
  • ASP IDE路径并发:如何进行性能测试和优化?
    ASP是一种流行的Web开发技术,可以用于构建动态网站和Web应用程序。然而,在ASP应用程序中,IDE路径并发问题可能会导致性能问题和应用程序崩溃。本文将介绍如何进行ASP IDE路径并发的性能测试和优化,以确保您的应用程序在高流量期间...
    99+
    2023-10-11
    ide path 并发
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作