GithubHelp home page GithubHelp logo

liuyueyi / quick-media Goto Github PK

View Code? Open in Web Editor NEW
857.0 53.0 319.0 32.31 MB

media(audio/image/qrcode/markdown/html/svg/png) support (多媒体编辑服务, 酷炫二维码, 音频, 图片, svg, markdown, html渲染服务支持)

Home Page: https://liuyueyi.github.io/tutorial/git/quick-media/

License: Apache License 2.0

Java 87.58% Shell 0.42% CSS 1.70% HTML 0.43% FreeMarker 0.05% Smarty 9.82%
ffmpeg markdown-html html-images spring-boot qrcode batik svg phantomjs image-magick audio-plugin

quick-media's Introduction

quick-media

#

Join the chat at https://gitter.im/quick-media/Lobby Builder JitPack Maven Central with version prefix filter codecov Average time to resolve an issue Percentage of issues still open

多媒体处理web服务

mult-media process Web Service by FFMPEG & ImageMagic & SpringMVC

quick-media原理介绍、使用教程、资源模板等相关博文,都可以在专栏 《quick-media | 一灰灰Learning》 获取哦

QrCode

本项目为一个提供图片 + 音频 + 视频 + 二维码 + 网页 + markdown处理的Web项目,我们的目标是封装一套多媒体文件处理的公共类库,简化各种复杂的调用;利用 spring-boot 来提供http接口实现多媒体的操作实例功能

整理了下QuickMedia的使用与技术文档,可以通过下面的链接进行查看

线上体验地址

使用说明

目前最新版jar包已提交到maven仓库,因此想直接引入的小伙伴,推荐直接使用下面的**仓库引入方式(请注意jitpack的包通常来讲更新会更频繁些,而**仓库的会更稳定些;相同的版本号对应的代码保持一致)

**仓库引入地址:

举例如二维码插件的依赖如下即可

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/qrcode-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>qrcode-plugin</artifactId>
    <!-- 以**仓库最新版本为准 -->
</dependency>

在下载本项目之后,有些常见事项需要注意一二

  • 工程中使用lombok简化大量的代码,因此使用idea的童鞋请装一下lombok的插件(最新版已移除lombok依赖)
  • 部分插件依赖第三方库,如 ffmpge, phantomjs, image-magic,请确保已经安装

jitpack使用方式

由于某些原因,导致github访问太慢,无法下载依赖包时,这里也给出了第二种选择方案,借助jitpack仓库,详情使用文档,请查看:quick-media jitpack-仓库导入

一个简单的示例如下:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>http://jitpack.io</url>
    </repository>
</repositories>


<!-- 请注意groupId和github的方式有一些区别哦 -->
<dependency>
    <groupId>com.github.liuyueyi.quick-media</groupId>
    <artifactId>qrcode-plugin</artifactId>
    <version>3.0.1</version>
</dependency>

I. 项目分析

1. 技术栈

  • spring-boot
  • ffmpeg
  • ImageMagic
  • zxing
  • batik
  • flexmark
  • phantomjs
  • jhlabs

2. 结构分析

目前项目主要结构区分为web/plugins两个模块,

web

plugins

插件工程,根据不同的场景,支持不同的服务功能,目前将所有的插件抽象出来,可以独立作为工具包提供给第三方依赖,直接引入使用

audio-plugin

提供音频转码服务,使用依赖如下,详细查看: audio-plugin说明

**仓库导入方式,注意groupId不同(为什么需要改变groupId? 因为上传到maven**仓库,要求groupId与github的项目所属相同)

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/audio-plugin -->
<!-- 请注意最新报,请直接到maven**仓库查看,或者到迭代日志中获取 -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>audio-plugin</artifactId>
</dependency>

date-plugin

提供时间戳、日期转换为农历日期,详细查看:date-plugin说明

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/date-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>date-plugin</artifactId>
</dependency>

image-plugin

提供图片合成,提供gif图片生成等图片操作的封装类,详细查看: image-plugin说明

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/image-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>image-plugin</artifactId>
</dependency>

markdown-plugin

markdown转html,转图片的封装类, 详细内容查看: markdown-plugin

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/markdown-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>markdown-plugin</artifactId>
</dependency>

phantom-plugin

提供根据phantomjs渲染html的封装

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/phantom-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>phantom-plugin</artifactId>
</dependency>

qrcode-plugin

提供二维码生成和解析的封装,详细查看: qrcode-plugin使用说明

qrcode使用手册

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/qrcode-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>qrcode-plugin</artifactId>
</dependency>

svg-plugin

提供svg文档的渲染,输出图片的封装,详细查看: svg-plugin使用说明

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/svg-core -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>svg-core</artifactId>
</dependency>

imagic-plugin

基于imagic-magic实现的图片编辑插件封装,详细查看: imagic-plugin使用说明

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/imagic-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>imagic-plugin</artifactId>
</dependency>

photo-plugin

相片、图片处理插件,适用于图像的各种处理,如灰度,素描,滤镜等

<!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/photo-plugin -->
<dependency>
    <groupId>com.github.liuyueyi.media</groupId>
    <artifactId>photo-plugin</artifactId>
</dependency>

II. 已支持服务

1. 音频转码

  • 音频不同格式的相互转码

2. 二维码生成 & 解析

  • 二维码生成
  • 个性二维码生成
    • 支持logo
    • 支持logo样式 (圆角logo, 边框)
    • 支持二维码颜色设置
    • 支持二维码圆角
    • 支持探测图形颜色设置
    • 支持探测图形图片定制
    • 支持背景图
    • 支持背景图圆角设置
    • 支持base64格式的二维码图片
    • 支持二维码定制绘制信息样式
      • 三角形
      • 矩形
      • 小矩形
      • 圆角矩形
      • 五边形
      • 六边形
      • 八边形
      • 五角星
    • 自定义图片, 码元图,背景图,NxM资源图
    • 前置图支持
  • 动态二维码生成支持
  • 二维码信息解析
  • 以下为3.x以上版本新增功能
  • 矢量二维码
    • svg矢量二维码
    • 支持logo,logo样式,边框
    • 默认提供的几何样式
      • 三角形
      • 矩形
      • 小矩形
      • 圆角矩形
      • 五边形
      • 五角星
      • 六边形
      • 八遍性
      • 文字
  • 支持自定义的渲染扩展
    • 通过实现 IDrawStyle 来实现自定义的渲染样式支持
  • 支持模板渲染

2.x 系列教程

查看更多二维码详情

3.x 系列教程

3.x系列教程

最新版本3.0.1,详情查看 迭代日志

给出一个实际生成的case如下:

3. 图片

查看更多图片服务详情

4. 图像

  • 图像转素描风格

5. 视频相关

  • 视频压缩
  • 转码
  • 截取
  • 码率调整
  • 生成gif

III. 阶段记录

详情查看: quick-media更新迭代日志

IV. 文档

所有使用以及技术文档,开发过程中一些常见问题汇总,可以点击👉: quick-media文档

问题记录汇总

V. 其他

其他

看到下面的star走势图,难道真的没有动心点点🖱小小的👍一下么

Stargazers over time

联系我

如使用过程中遇到了问题,在查看教程无果之后,请优先提issue,当然也欢迎联系我;

  • QQ: 一灰灰/3302797840
  • WeChat: 一灰/liuyueyi25

扫描关注

创作不易,你们的支持是我更新的动力

打赏列表

1一分也是❤️,感谢大佬的打赏 (打赏的小伙伴不妨留个备注名)

公众号&博客

QrCode

打赏码

pay


实例演示

0. 应用网站

项目本身提供一个控制台,基于reactjs搭建,在console模块下,启动即可

使用react.js重构后的前端网站,实现前后端分离,前端网页借助gitee的pages直接部署,测试链接

web实际演示图:

demo

quick-media's People

Contributors

1260328762 avatar gitter-badger avatar liuyueyi avatar whiterasbk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quick-media's Issues

markdown-plugin中html 转图片 内敛样式中的 :border-radius: 50px;这个属性不支持 请问有解决办法吗

  1. 代码是这样的:<img src="http://img-1255379270.cosbj.myqcloud.com/website/iconWeb/phone-1.png" class="foot-img" style="height: 34px; width: 34px; background-color: rgb(17, 17, 17); vertical-align: middle; border-radius: 50px;">

  2. 浏览器展示是圆图: http://test-1255379270.cosbj.myqcloud.com/Snipaste_2019-07-23_14-26-03.png

  3. html 转图片生成的图片为:http://test-1255379270.cosbj.myqcloud.com/Snipaste_2019-07-23_14-32-02.png

水印支持

水印可以分为两种情况

  • 全背景水印,即背景一行一行的出现半透明图文水印
  • 在图片的某个位置添加图文水印

clone 下来之后 报错了

clone 下来之后 报错了。
QrCodeOptions 没有getXXX 导致 引用处各种报错,是不是代码push 不完整啊

如何将html直接转换为jpg

我看目前的test例子,都是将markdown转换为图片,我自己尝试了如下方式,但是转换出的图片只有两个null。

Html2ImageWrapper html2ImageWrapper = Html2ImageWrapper.of(".....").build();
html2ImageWrapper.asFile("/home/me/quick2image.jpg");

image

Multiple dependency conflicts in quick-media, which may lead to the unexpected semantic behaviors

Hi, in quick-media-0.008\plugins\phantom-plugin there are multiple versions of library org.seleniumhq.selenium:selenium-remote-driver:, i.e., org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 and org.seleniumhq.selenium:selenium-remote-driver:jar:3.1.0. According to Maven management strategy, only org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 can be loaded.

By static analysis, library org.seleniumhq.selenium:selenium-java:jar:2.53.1:compile expects to reference the methods defined in class org.openqa.selenium.remote.DesiredCapabilities included in version org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 via the following invocation path:

<com.github.hui.quick.plugin.phantom.Html2ImageByJsWrapper: void <clinit>()> D:\testcase\TestProject\quick-media-0.008\plugins\phantom-plugin\target\classes
<com.github.hui.quick.plugin.phantom.Html2ImageByJsWrapper: org.openqa.selenium.phantomjs.PhantomJSDriver getPhantomJs()> D:\testcase\TestProject\quick-media-0.008\plugins\phantom-plugin\target\classes
<org.openqa.selenium.remote.DesiredCapabilities: void setCapability(java.lang.String,java.lang.String)> D:\cEnvironment\repository\org\seleniumhq\selenium\selenium-api\2.53.1\selenium-api-2.53.1.jar
<org.apache.commons.collections.map.FixedSizeSortedMap: java.lang.Object put(java.lang.Object,java.lang.Object)> D:\cEnvironment\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar
<net.sourceforge.htmlunit.corejs.javascript.NativeObject: boolean containsKey(java.lang.Object)> D:\cEnvironment\repository\net\sourceforge\htmlunit\htmlunit-core-js\2.17\htmlunit-core-js-2.17.jar
<net.sourceforge.htmlunit.corejs.javascript.IdScriptableObject: boolean has(java.lang.String,net.sourceforge.htmlunit.corejs.javascript.Scriptable)> D:\cEnvironment\repository\net\sourceforge\htmlunit\htmlunit-core-js\2.17\htmlunit-core-js-2.17.jar
<net.sourceforge.htmlunit.corejs.javascript.regexp.NativeRegExpCtor: java.lang.Object getInstanceIdValue(int)> D:\cEnvironment\repository\net\sourceforge\htmlunit\htmlunit-core-js\2.17\htmlunit-core-js-2.17.jar
<org.openqa.selenium.remote.DesiredCapabilities: java.lang.String toString()>

However, org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 would not be loaded due to dependency conflicts, and the actual loaded version org.seleniumhq.selenium:selenium-remote-driver:jar:3.1.0 does not contain this class at all!!
To my surprise, there is no classnotfoundexeceptions here!!
What a Coincidence, another Jar file org.seleniumhq.selenium:selenium-api:2.53.1 also contain a class with the same fully qualified name "org.openqa.selenium.remote.DesiredCapabilities".
As a result, it is forced referenced by library org.seleniumhq.selenium:selenium-java:jar:2.53.1:compile via the above invocation path.
I think it is a danger signal for project maintenance.

By further analyzing, the expected callee org.openqa.selenium.remote.DesiredCapabilities: java.lang.String toString() in shadowed version org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 , has different implementations from the actual callee with the same signature (same method names, same paremeters) included in the unexpected (but actual loaded) version org.seleniumhq.selenium:selenium-api:2.53.1, which leads to different behaviors.

Solution:

Upgrade org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1 to 3.1.0, to keep the version consistency.

Dependency tree---

[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ phantom-plugin ---
[WARNING] Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution
[INFO] com.github.hui.media:phantom-plugin:jar:1.0
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:2.53.1:compile
[INFO] | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.53.1:compile
[INFO] | | - (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - version managed from 3.1.0; omitted for duplicate)
[INFO] | +- org.seleniumhq.selenium:selenium-edge-driver:jar:2.53.1:compile
[INFO] | | +- (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] | | +- commons-io:commons-io:jar:2.4:compile
[INFO] | | - org.apache.commons:commons-exec:jar:1.3:compile
[INFO] | +- org.seleniumhq.selenium:htmlunit-driver:jar:2.21:compile
[INFO] | | +- net.sourceforge.htmlunit:htmlunit:jar:2.21:compile
[INFO] | | | +- xalan:xalan:jar:2.7.2:compile
[INFO] | | | | - xalan:serializer:jar:2.7.2:compile
[INFO] | | | +- org.apache.commons:commons-lang3:jar:3.5:compile (version managed from 3.4)
[INFO] | | | +- (org.apache.httpcomponents:httpclient:jar:4.5.3:compile - version managed from 4.5.2; omitted for duplicate)
[INFO] | | | +- org.apache.httpcomponents:httpmime:jar:4.5.3:compile (version managed from 4.5.2)
[INFO] | | | | - (org.apache.httpcomponents:httpclient:jar:4.5.3:compile - version managed from 4.5.2; omitted for duplicate)
[INFO] | | | +- commons-codec:commons-codec:jar:1.10:compile
[INFO] | | | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.17:compile
[INFO] | | | +- net.sourceforge.htmlunit:neko-htmlunit:jar:2.21:compile
[INFO] | | | | - xerces:xercesImpl:jar:2.11.0:compile
[INFO] | | | | - xml-apis:xml-apis:jar:1.4.01:compile
[INFO] | | | +- net.sourceforge.cssparser:cssparser:jar:0.9.18:compile
[INFO] | | | | - org.w3c.css:sac:jar:1.3:compile
[INFO] | | | +- (commons-io:commons-io:jar:2.4:compile - omitted for duplicate)
[INFO] | | | - org.eclipse.jetty.websocket:websocket-client:jar:9.4.5.v20170502:compile (version managed from 9.2.15.v20160210)
[INFO] | | | +- org.eclipse.jetty:jetty-util:jar:9.4.5.v20170502:compile
[INFO] | | | +- org.eclipse.jetty:jetty-io:jar:9.4.5.v20170502:compile
[INFO] | | | | - (org.eclipse.jetty:jetty-util:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | | +- org.eclipse.jetty:jetty-client:jar:9.4.5.v20170502:compile
[INFO] | | | | +- org.eclipse.jetty:jetty-http:jar:9.4.5.v20170502:compile
[INFO] | | | | | +- (org.eclipse.jetty:jetty-util:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | | | | - (org.eclipse.jetty:jetty-io:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | | | - (org.eclipse.jetty:jetty-io:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | | - org.eclipse.jetty.websocket:websocket-common:jar:9.4.5.v20170502:compile
[INFO] | | | +- org.eclipse.jetty.websocket:websocket-api:jar:9.4.5.v20170502:compile
[INFO] | | | +- (org.eclipse.jetty:jetty-util:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | | - (org.eclipse.jetty:jetty-io:jar:9.4.5.v20170502:compile - omitted for duplicate)
[INFO] | | - commons-collections:commons-collections:jar:3.2.2:compile
[INFO] | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.53.1:compile
[INFO] | | +- (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] | | +- (commons-io:commons-io:jar:2.4:compile - omitted for duplicate)
[INFO] | | - (org.apache.commons:commons-exec:jar:1.3:compile - omitted for duplicate)
[INFO] | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.53.1:compile
[INFO] | | +- net.java.dev.jna:jna:jar:4.2.2:compile
[INFO] | | +- net.java.dev.jna:jna-platform:jar:4.1.0:compile
[INFO] | | | - (net.java.dev.jna:jna:jar:4.2.2:compile - version managed from 4.1.0; omitted for duplicate)
[INFO] | | - (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.53.1:compile
[INFO] | | +- (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] | | - io.netty:netty:jar:3.5.7.Final:compile
[INFO] | +- org.seleniumhq.selenium:selenium-support:jar:2.53.1:compile
[INFO] | | - (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] | - org.seleniumhq.selenium:selenium-leg-rc:jar:2.53.1:compile
[INFO] | - (org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile - omitted for duplicate)
[INFO] +- com.github.detro:ghostdriver:jar:2.1.0:compile
[INFO] | - org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile
[INFO] | +- cglib:cglib-nodep:jar:2.1_3:compile
[INFO] | +- com.google.code.gson:gson:jar:2.8.0:compile (version managed from 2.3.1)
[INFO] | +- org.seleniumhq.selenium:selenium-api:jar:2.53.1:compile
[INFO] | | +- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate)
[INFO] | | - (com.google.code.gson:gson:jar:2.8.0:compile - version managed from 2.3.1; omitted for duplicate)
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.3:compile (version managed from 4.5.1)
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.6:compile
[INFO] | | - (commons-codec:commons-codec:jar:1.10:compile - version managed from 1.9; omitted for duplicate)
[INFO] | +- (com.google.guava:guava:jar:19.0:compile - omitted for conflict with 21.0)
[INFO] | +- (org.apache.commons:commons-exec:jar:1.3:compile - omitted for duplicate)
[INFO] | +- (net.java.dev.jna:jna:jar:4.2.2:compile - version managed from 4.1.0; omitted for duplicate)
[INFO] | - (net.java.dev.jna:jna-platform:jar:4.1.0:compile - omitted for duplicate)
[INFO] +- com.google.guava:guava:jar:21.0:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- commons-logging:commons-logging:jar:1.2:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.1.7:compile
[INFO] | +- ch.qos.logback:logback-core:jar:1.1.11:compile (version managed from 1.1.7)
[INFO] | - (org.slf4j:slf4j-api:jar:1.7.25:compile - version managed from 1.7.20; omitted for duplicate)
[INFO] - org.springframework.boot:spring-boot-starter-test:jar:1.5.4.RELEASE:test
[INFO] +- org.springframework.boot:spring-boot-test:jar:1.5.4.RELEASE:test
[INFO] | - org.springframework.boot:spring-boot:jar:1.5.4.RELEASE:test
[INFO] | +- (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] | - org.springframework:spring-context:jar:4.3.9.RELEASE:test
[INFO] | +- org.springframework:spring-aop:jar:4.3.9.RELEASE:test
[INFO] | | +- (org.springframework:spring-beans:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] | | - (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] | +- org.springframework:spring-beans:jar:4.3.9.RELEASE:test
[INFO] | | - (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] | +- (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] | - org.springframework:spring-expression:jar:4.3.9.RELEASE:test
[INFO] | - (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)
[INFO] +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.4.RELEASE:test
[INFO] | +- (org.springframework.boot:spring-boot-test:jar:1.5.4.RELEASE:test - omitted for duplicate)
[INFO] | - org.springframework.boot:spring-boot-autoconfigure:jar:1.5.4.RELEASE:test
[INFO] | - (org.springframework.boot:spring-boot:jar:1.5.4.RELEASE:test - omitted for duplicate)
[INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:test
[INFO] | +- net.minidev:json-smart:jar:2.2.1:test
[INFO] | | - net.minidev:accessors-smart:jar:1.1:test
[INFO] | | - org.ow2.asm:asm:jar:5.0.3:test
[INFO] | - (org.slf4j:slf4j-api:jar:1.7.25:test - version managed from 1.7.16; omitted for duplicate)
[INFO] +- junit:junit:jar:4.12:test
[INFO] | - (org.hamcrest:hamcrest-core:jar:1.3:test - version managed from 1.1; omitted for duplicate)
[INFO] +- org.assertj:assertj-core:jar:2.6.0:test
[INFO] +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] | +- (org.hamcrest:hamcrest-core:jar:1.3:test - version managed from 1.1; omitted for duplicate)
[INFO] | - org.objenesis:objenesis:jar:2.1:test
[INFO] +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] | - (org.hamcrest:hamcrest-core:jar:1.3:test - version managed from 1.1; omitted for duplicate)
[INFO] +- org.skyscreamer:jsonassert:jar:1.4.0:test
[INFO] | - com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] +- org.springframework:spring-core:jar:4.3.9.RELEASE:test
[INFO] - org.springframework:spring-test:jar:4.3.9.RELEASE:test
[INFO] - (org.springframework:spring-core:jar:4.3.9.RELEASE:test - omitted for duplicate)

Best regards,
Coco

markdown 转 image

将markdown文档,格式化之后,输出一张长图

如下, 即为解析markdown生成的图片

image

图片合成支持

支持图片合成,合成基本元素包括

  • 图片
  • 文字
  • 基本集合图形(直线,矩形,圆形等)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.