{"id":14985074,"url":"https://github.com/liuyueyi/quick-media","last_synced_at":"2025-05-14T11:13:04.235Z","repository":{"id":44896599,"uuid":"97117460","full_name":"liuyueyi/quick-media","owner":"liuyueyi","description":"media(audio/image/qrcode/markdown/html/svg/png) support (多媒体编辑服务, 酷炫二维码, 音频, 图片, svg, markdown, html渲染服务支持)  ","archived":false,"fork":false,"pushed_at":"2024-10-25T10:39:28.000Z","size":33072,"stargazers_count":881,"open_issues_count":26,"forks_count":323,"subscribers_count":54,"default_branch":"master","last_synced_at":"2024-10-29T15:21:55.094Z","etag":null,"topics":["audio-plugin","awt","batik","emotion","ffmpeg","flexmark","gif","html-images","image-magick","java","markdown-html","phantomjs","png2svg","qrcode","qrcode-plugin","spring-boot","svg","svg2png","zxing","zxing-qrcode"],"latest_commit_sha":null,"homepage":"https://liuyueyi.github.io/tutorial/git/quick-media/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liuyueyi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-13T11:56:25.000Z","updated_at":"2024-10-25T10:39:34.000Z","dependencies_parsed_at":"2023-02-10T08:45:52.066Z","dependency_job_id":"56e2dc8f-2137-4963-8509-dddea631d28b","html_url":"https://github.com/liuyueyi/quick-media","commit_stats":{"total_commits":322,"total_committers":6,"mean_commits":"53.666666666666664","dds":0.3354037267080745,"last_synced_commit":"26269ce41eb7f80c20ef371c0834fe5d8640d4b7"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyueyi%2Fquick-media","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyueyi%2Fquick-media/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyueyi%2Fquick-media/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liuyueyi%2Fquick-media/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liuyueyi","download_url":"https://codeload.github.com/liuyueyi/quick-media/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248340738,"owners_count":21087511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-plugin","awt","batik","emotion","ffmpeg","flexmark","gif","html-images","image-magick","java","markdown-html","phantomjs","png2svg","qrcode","qrcode-plugin","spring-boot","svg","svg2png","zxing","zxing-qrcode"],"created_at":"2024-09-24T14:10:15.013Z","updated_at":"2025-04-11T04:23:32.237Z","avatar_url":"https://github.com/liuyueyi.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# quick-media\n\n\u003ca href=\"https://blog.hhui.top\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-微信关注“一灰灰blog”公众号-orange.svg\" alt=\"#\" align=\"right\"\u003e\n\u003c/a\u003e\n\n[![Join the chat at https://gitter.im/quick-media/Lobby](https://badges.gitter.im/quick-media/Lobby.svg)](https://gitter.im/quick-media/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Builder](https://travis-ci.org/liuyueyi/quick-media.svg?branch=master)](https://travis-ci.org/liuyueyi/quick-media)\n[![JitPack](https://jitpack.io/v/liuyueyi/quick-media.svg)](https://jitpack.io/#liuyueyi/quick-media)\n[![Maven Central with version prefix filter](https://img.shields.io/maven-central/v/com.github.liuyueyi.media/plugins.svg)](https://search.maven.org/search?q=g:com.github.liuyueyi.media)\n[![codecov](https://codecov.io/gh/liuyueyi/quick-media/branch/master/graph/badge.svg)](https://codecov.io/gh/liuyueyi/quick-media)\n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/liuyueyi/quick-media.svg)](http://isitmaintained.com/project/liuyueyi/quick-media \"Average time to resolve an issue\")\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/liuyueyi/quick-media.svg)](http://isitmaintained.com/project/liuyueyi/quick-media \"Percentage of issues still open\")\n\n\u003e 多媒体处理web服务\n\u003e\n\u003e mult-media process Web Service by FFMPEG \u0026 ImageMagic \u0026 SpringMVC\n\nquick-media原理介绍、使用教程、资源模板等相关博文，都可以在专栏 《[quick-media | 一灰灰Learning](https://hhui.top/quick/quick-media/)》 获取哦\n\n![QrCode](https://spring.hhui.top/spring-blog/imgs/info/info.png) \n\n \n本项目为一个提供图片 + 音频 + 视频 + 二维码 + 网页 + markdown处理的Web项目，我们的目标是封装一套多媒体文件处理的公共类库，简化各种复杂的调用；利用 spring-boot 来提供http接口实现多媒体的操作实例功能\n\n整理了下QuickMedia的使用与技术文档，可以通过下面的链接进行查看\n\n- [http://liuyueyi.gitee.io/quick-media/#/](http://liuyueyi.gitee.io/quick-media/#/)\n- [https://liuyueyi.github.io/quick-media/#/](https://liuyueyi.github.io/quick-media/#/)\n- 3.x 系列教程 [quick-media | 一灰灰Learning](https://hhui.top/quick/quick-media/)\n\n线上体验地址\n\n- Z+ | web : [http://tool.hhui.top](http://tool.hhui.top)\n\n### 使用说明\n\n目前最新版jar包已提交到maven仓库，因此想直接引入的小伙伴，推荐直接使用下面的中央仓库引入方式（请注意jitpack的包通常来讲更新会更频繁些，而中央仓库的会更稳定些；相同的版本号对应的代码保持一致）\n\n中央仓库引入地址: \n\n- 引入依赖：[https://mvnrepository.com/artifact/com.github.liuyueyi.media](https://mvnrepository.com/artifact/com.github.liuyueyi.media)\n- 历史版本：[version in mvn repository*](https://repo1.maven.org/maven2/com/github/liuyueyi/media/)\n\n举例如二维码插件的依赖如下即可\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/qrcode-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003eqrcode-plugin\u003c/artifactId\u003e\n    \u003c!-- 以中央仓库最新版本为准 --\u003e\n\u003c/dependency\u003e\n```\n\n---\n\n在下载本项目之后，有些常见事项需要注意一二\n\n- ~~工程中使用lombok简化大量的代码，因此使用idea的童鞋请装一下lombok的插件(最新版已移除lombok依赖)~~\n- 部分插件依赖第三方库，如 ffmpge, phantomjs, image-magic，请确保已经安装\n\n**jitpack使用方式**\n\n由于某些原因，导致github访问太慢，无法下载依赖包时，这里也给出了第二种选择方案，借助`jitpack`仓库，详情使用文档，请查看：[quick-media jitpack-仓库导入](https://github.com/liuyueyi/quick-media/#/%E8%BF%AD%E4%BB%A3/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97?id=b-jitpack-%e4%bb%93%e5%ba%93)\n\n\n一个简单的示例如下:\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttp://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\n\u003c!-- 请注意groupId和github的方式有一些区别哦 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.quick-media\u003c/groupId\u003e\n    \u003cartifactId\u003eqrcode-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e3.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## I. 项目分析\n\n### 1. 技术栈\n\n- spring-boot \n- ffmpeg\n- ImageMagic\n- zxing\n- batik\n- flexmark\n- phantomjs\n- jhlabs\n\n### 2. 结构分析\n\n目前项目主要结构区分为web/plugins两个模块，\n\n#### web\n\n- 根据spring-boot可以迅速搭建一个web服务，提供http接口用于功能测试\n- ~~内部集成了一个简单的web网站，打开: [http://media.hhui.top:8089/media/webs](http://media.hhui.top:8089/media/webs) 查看~~\n- ~~使用ReactJS，前后端分离，写了一个更友好的网站，打开: [https://zweb.hhui.top/#/index](https://zweb.hhui.top/#/index) 查看~~\n- 内部实现了小程序【图文小工具】的后端逻辑\n- 本项目所有功能，将移植到 [一灰灰的神奇小工具](https://tool.hhui.top)\n\n#### plugins \n\n插件工程，根据不同的场景，支持不同的服务功能，目前将所有的插件抽象出来，可以独立作为工具包提供给第三方依赖，直接引入使用\n\n**audio-plugin**\n\n提供音频转码服务，使用依赖如下，详细查看: [audio-plugin说明](plugins/audio-plugin/readme.md)\n\n中央仓库导入方式，注意groupId不同(为什么需要改变groupId? 因为上传到maven中央仓库，要求groupId与github的项目所属相同)\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/audio-plugin --\u003e\n\u003c!-- 请注意最新报，请直接到maven中央仓库查看，或者到迭代日志中获取 --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003eaudio-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n**date-plugin**\n\n提供时间戳、日期转换为农历日期，详细查看：[date-plugin说明](plugins/date-plugin/readme.md)\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/date-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003edate-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n**image-plugin**\n\n提供图片合成，提供gif图片生成等图片操作的封装类，详细查看： [image-plugin说明](plugins/image-plugin/readme.md)\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/image-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003eimage-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n**markdown-plugin** \n\nmarkdown转html，转图片的封装类， 详细内容查看: [markdown-plugin](plugins/markdown-plugin/readme.md)\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/markdown-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003emarkdown-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n**phantom-plugin**\n\n提供根据phantomjs渲染html的封装\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/phantom-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003ephantom-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n**qrcode-plugin**\n\n提供二维码生成和解析的封装，详细查看: [qrcode-plugin使用说明](plugins/qrcode-plugin/readme.md)\n\n\u003e [qrcode使用手册](https://liuyueyi.github.io/quick-media/#/%E6%8F%92%E4%BB%B6/%E4%BA%8C%E7%BB%B4%E7%A0%81/%E4%BA%8C%E7%BB%B4%E7%A0%81%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C)\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/qrcode-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003eqrcode-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n**svg-plugin**\n\n提供svg文档的渲染，输出图片的封装，详细查看: [svg-plugin使用说明](plugins/svg-plugin/readme.md)\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/svg-core --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003esvg-core\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n**imagic-plugin**\n\n基于imagic-magic实现的图片编辑插件封装，详细查看: [imagic-plugin使用说明](plugins/imagic-plugin/readme.md)\n\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/imagic-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003eimagic-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n**photo-plugin**\n\n相片、图片处理插件，适用于图像的各种处理，如灰度，素描，滤镜等\n\n```xml\n\u003c!-- https://mvnrepository.com/artifact/com.github.liuyueyi.media/photo-plugin --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.liuyueyi.media\u003c/groupId\u003e\n    \u003cartifactId\u003ephoto-plugin\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n## II. 已支持服务\n\n### 1. 音频转码\n   - [x] 音频不同格式的相互转码\n\n### 2. 二维码生成 \u0026 解析\n\n- [x] 二维码生成\n- [x] 个性二维码生成\n    - 支持logo\n    - 支持logo样式 （圆角logo， 边框）\n    - 支持二维码颜色设置\n    - 支持二维码圆角\n    - 支持探测图形颜色设置\n    - 支持探测图形图片定制\n    - 支持背景图\n    - 支持背景图圆角设置\n    - 支持base64格式的二维码图片\n    - 支持二维码定制绘制信息样式\n      - 三角形\n      - 矩形\n      - 小矩形\n      - 圆角矩形\n      - 五边形 \n      - 六边形\n      - 八边形\n      - 五角星\n      - 圆\n    - 自定义图片, 码元图，背景图，NxM资源图\n    - 前置图支持\n- [x] 动态二维码生成支持\n- [x] 二维码信息解析\n- 以下为3.x以上版本新增功能\n- [x] 矢量二维码\n  - svg矢量二维码\n  - 支持logo，logo样式，边框\n  - 默认提供的几何样式\n    - 三角形\n    - 矩形\n    - 小矩形\n    - 圆角矩形\n    - 五边形\n    - 五角星\n    - 六边形\n    - 八遍性\n    - 圆\n    - 文字\n- [x] 支持自定义的渲染扩展\n  - 通过实现 IDrawStyle 来实现自定义的渲染样式支持\n- [x] 支持模板渲染 \n\n**2.x 系列教程**\n\n[查看更多二维码详情](https://liuyueyi.github.io/quick-media/#/插件/二维码/二维码插件使用手册)\n\n**3.x 系列教程**\n\n[3.x系列教程](https://hhui.top/quick/quick-media/qrcode/)\n\n\u003cfont color=\"red\"\u003e最新版本3.0.1，详情查看 [迭代日志](https://hhui.top/quick/quick-media/version/qrcode-version/)\u003c/font\u003e\n\n给出一个实际生成的case如下:\n\n\u003cimg src=\"http://ww1.sinaimg.cn/large/8154e929gy1g8wadvkt56g20pz08zwl5.gif\"/\u003e\n\n### 3. 图片\n\n- [x] 长图文生成\n   - [水平文字，上下布局长图文生成](https://liuyueyi.github.io/quick-media/#/插件/image/Java实现长图文生成)\n   - [垂直文字，左右布局长图文生成](https://liuyueyi.github.io/quick-media/#/插件/image/Java实现竖排长图文生成)\n   - 第三方字体支持\n- [x] markdown 转 image\n    - [markdown 转 html](https://liuyueyi.github.io/quick-media/#/插件/markdown/markdown转html)\n    - [html 转 image](https://liuyueyi.github.io/quick-media/#/markdown转image)\n    - [利用phantomjs实现html转image](https://liuyueyi.github.io/quick-media/#/插件/phantom/Java\u0026PhantomJs实现html输出图片)\n- [x] gif图生成\n- [x] 合成\n    - [图片合成支持](https://liuyueyi.github.io/quick-media/#/插件/image/图片合成)\n- [x] 水印\n- [x] svg渲染\n- [x] 裁剪\n- [x] 压缩\n- [x] 旋转\n- [x] 缩放\n- [x] 灰度化，像素化\n- [x] 转字符图\n- [x] 位图转矢量图\n- [x] 图片自动裁剪\n- [x] jpg/png转svg\n- [ ] 格式转换\n- [ ] 相片处理\n  - [x] 相片转素描\n\n[查看更多图片服务详情](https://liuyueyi.github.io/quick-media/#/插件/image/使用手册)\n\n### 4. 图像\n\n- [x] 图像转素描风格\n    \n### 5. 视频相关\n\n- [ ] 视频压缩\n- [ ] 转码\n- [ ] 截取\n- [ ] 码率调整\n- [ ] 生成gif\n\n\n## III. 阶段记录\n\n详情查看: [quick-media更新迭代日志](https://liuyueyi.github.io/quick-media/#/%E8%BF%AD%E4%BB%A3/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)\n\n## IV. 文档\n\n所有使用以及技术文档，开发过程中一些常见问题汇总，可以点击👉: [quick-media文档](https://liuyueyi.github.io/quick-media/#/) \n\n### 问题记录汇总\n\n- [图片旋转不生效问题](https://liuyueyi.github.io/quick-media/#/采坑/图片旋转问题修复)\n- [markdonw转图片中文乱码问题](https://liuyueyi.github.io/quick-media/#/采坑/markdown转图片中文乱码)\n- [兼容ImageIO读取jpeg图片变红](https://liuyueyi.github.io/quick-media/#/采坑/Batik渲染png图片异常的bug修复)\n- [Batik渲染png图片异常的bug修复](https://liuyueyi.github.io/quick-media/#/采坑/兼容ImageIO读取jpeg图片变红)\n\n\n## V. 其他\n\n### 其他\n\n看到下面的star走势图，难道真的没有动心点点🖱小小的👍一下么 \n\n[![Stargazers over time](https://starchart.cc/liuyueyi/quick-media.svg)](https://starchart.cc/liuyueyi/quick-media)\n\n### 联系我\n\n如使用过程中遇到了问题，在查看教程无果之后，请优先提issue，当然也欢迎联系我；\n\n- QQ： 一灰灰/3302797840\n- WeChat: 一灰/liuyueyi25\n\n### 扫描关注\n\n创作不易，你们的支持是我更新的动力\n\n**打赏列表**\n\n\u003e 1一分也是❤️，感谢大佬的打赏 (打赏的小伙伴不妨留个备注名)\n\n- [datouliang](https://github.com/datouliang)\n- [*桑]()\n- [坏笑]()\n\n**公众号\u0026博客**\n\n![QrCode](https://blog.hhui.top/hexblog/imgs/info/blogHhui.png)\n\n\n\n**打赏码**\n\n![pay](https://blog.hhui.top/hexblog/imgs/info/payHhui.png)\n\n---\n\n### 实例演示\n\n#### 0. 应用网站\n\n项目本身提供一个控制台，基于reactjs搭建，在console模块下，启动即可\n\n- [http://localhost:8089](http://localhost:8089)\n\n\n使用react.js重构后的前端网站，实现前后端分离，前端网页借助gitee的pages直接部署，测试链接\n\n- gitee静态页面: [http://liuyueyi.gitee.io/zweb](http://liuyueyi.gitee.io/zweb)\n- \u003cdel\u003e [https://zweb.hhui.top/#/index](https://zweb.hhui.top/#/index) 服务器hold不住，后端逻辑已下线😭 \u003c/del\u003e\n\n\nweb实际演示图: \n\n![demo](doc/img/demo/zwebdemo.gif)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliuyueyi%2Fquick-media","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliuyueyi%2Fquick-media","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliuyueyi%2Fquick-media/lists"}