更新记录
1.1.0(2025-07-06) 下载此版本
v1.1.0
- 添加推荐参数功能
- 提供6种预设参数
- 优化用户界面
v1.0.0
- 初始版本发布
- 支持基本的图片转线稿功能
- 提供参数调节界面
- 支持保存功能
平台兼容性
uni-app(4.05)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
× | × | √ |
Image-to-Sketch 图片转线稿组件
基于 uni-app 的图片转线稿组件,可以将任意图片转换为线稿风格,支持多种参数调节。
功能特性
- 🖼️ 支持多种图片格式(JPG、PNG等)
- 🎨 实时线稿转换效果
- ⚙️ 可调节边缘强度、对比度、亮度
- 📱 适配多端(H5、小程序、App)
- 💾 支持保存转换后的线稿图片
- 🎯 简洁易用的界面设计
- 🎨 多种预设参数推荐
推荐参数
组件提供了6种预设参数,适用于不同场景:
1. 标准线稿
- 适用场景:大多数图片
- 算法:Sobel边缘检测
- 参数:强度5,对比度100%,亮度100%
- 特点:平衡的线稿效果,适合日常使用
2. 精细线稿
- 适用场景:需要保留细节的图片
- 算法:Canny边缘检测
- 参数:强度7,对比度120%,亮度90%
- 特点:细节丰富,线条清晰
3. 粗犷线稿
- 适用场景:艺术风格创作
- 算法:Sobel边缘检测
- 参数:强度3,对比度80%,亮度110%
- 特点:线条粗犷,具有艺术感
4. 素描风格
- 适用场景:手绘素描效果
- 算法:Laplacian边缘检测
- 参数:强度6,对比度150%,亮度85%
- 特点:类似手绘素描的质感
5. 漫画风格
- 适用场景:动漫图片处理
- 算法:Canny边缘检测
- 参数:强度4,对比度130%,亮度95%
- 特点:适合动漫风格的线条效果
6. 极简风格
- 适用场景:极简设计
- 算法:Sobel边缘检测
- 参数:强度8,对比度200%,亮度100%
- 特点:极简的线条,高对比度
安装与引入
方式一:页面中直接引入
<template>
<view>
<image-to-sketch />
</view>
</template>
<script>
import ImageToSketch from '@/components/image-to-sketch/image-to-sketch.vue'
export default {
components: {
ImageToSketch
}
}
</script>
方式二:全局注册
// main.js
import ImageToSketch from '@/components/image-to-sketch/image-to-sketch.vue'
Vue.component('ImageToSketch', ImageToSketch)
基本用法
<template>
<view class="container">
<image-to-sketch ref="imageToSketch" />
</view>
</template>
<script>
import ImageToSketch from '@/components/image-to-sketch/image-to-sketch.vue'
export default {
components: {
ImageToSketch
},
methods: {
// 应用预设参数
applyPreset() {
const preset = {
algorithm: 'sobel',
edgeStrength: 5,
contrast: 100,
brightness: 100,
threshold: 0.1
}
this.$refs.imageToSketch.applyPreset(preset)
}
}
}
</script>
组件功能说明
1. 图片上传
- 点击上传区域选择图片
- 支持从相册选择或拍照
- 自动预览原图
2. 参数调节
- 算法选择:Sobel、Laplacian、Canny三种边缘检测算法
- 边缘强度:控制线稿的粗细程度(1-10)
- 对比度:调节图片对比度(0-200%)
- 亮度:调节图片亮度(0-200%)
- 阈值:Canny算法的阈值参数(5-50%)
3. 线稿转换
- 点击"生成线稿"按钮开始转换
- 使用Canvas API进行图片处理
- 应用边缘检测算法生成线稿效果
4. 保存功能
- 转换完成后可保存线稿到相册
- 自动处理权限申请
技术实现
核心算法
- 灰度转换:将彩色图片转换为灰度图
- 边缘检测:使用梯度算子检测图像边缘
- 参数调整:应用对比度和亮度调整
- Canvas处理:使用uni-app的Canvas API进行图像处理
边缘检测原理
// Sobel边缘检测算法
const gx = pixel * sobelX[kernelIndex]
const gy = pixel * sobelY[kernelIndex]
const magnitude = Math.sqrt(gx * gx + gy * gy)
算法对比
算法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Sobel | 计算简单,效果稳定 | 对噪声敏感 | 一般图片处理 |
Laplacian | 对边缘敏感 | 对噪声非常敏感 | 清晰图片 |
Canny | 效果最好,抗噪声 | 计算复杂 | 高质量要求 |
注意事项
- 性能考虑:图片处理可能较慢,建议添加加载提示
- 内存使用:大图片处理时注意内存占用
- 平台兼容:不同平台的Canvas API可能有差异
- 权限申请:保存图片需要相册权限
- 参数调节:不同图片可能需要不同参数,建议先使用预设参数
样式自定义
组件使用scoped样式,可通过以下方式自定义:
<style>
/* 覆盖组件样式 */
.image-to-sketch {
/* 自定义样式 */
}
.btn-primary {
background: #your-color !important;
}
</style>
示例页面
查看 pages/test-image-to-sketch/test-image-to-sketch.vue
了解完整使用示例,包含推荐参数功能。
更新日志
v1.1.0
- 添加推荐参数功能
- 提供6种预设参数
- 优化用户界面
v1.0.0
- 初始版本发布
- 支持基本的图片转线稿功能
- 提供参数调节界面
- 支持保存功能
许可证
MIT License
如有问题或建议,请提交 Issue 或 Pull Request。
支持的算法
基础算法
- Sobel边缘检测 - 经典的边缘检测算法,适合大多数图片
- Laplacian边缘检测 - 对边缘敏感,适合清晰的图片,但对噪声敏感
- Canny边缘检测 - 多阶段算法,效果最好但计算量大,适合高质量要求
新增算法
- Prewitt边缘检测 - 类似Sobel但更简单,对噪声敏感,适合快速处理
- Roberts边缘检测 - 对角线边缘检测,适合检测对角线特征和细节
- Scharr边缘检测 - Sobel的改进版本,精度更高,适合精确边缘检测
- LoG边缘检测 - 高斯-拉普拉斯,适合检测圆形边缘和斑点
- DoG边缘检测 - 高斯差分,适合多尺度边缘检测和特征提取
算法特点对比
算法 | 特点 | 适用场景 | 计算复杂度 |
---|---|---|---|
Sobel | 经典稳定 | 通用场景 | 中等 |
Laplacian | 边缘敏感 | 清晰图片 | 低 |
Canny | 效果最佳 | 高质量要求 | 高 |
Prewitt | 简单快速 | 快速处理 | 低 |
Roberts | 对角线检测 | 对角线特征 | 很低 |
Scharr | 精度高 | 精确检测 | 中等 |
LoG | 圆形检测 | 圆形边缘 | 高 |
DoG | 多尺度 | 特征提取 | 高 |
参数说明
- 边缘强度: 控制线稿的粗细程度,数值越大线条越细
- 对比度: 调节图片对比度,影响线条的清晰度
- 亮度: 调节图片亮度,影响整体明暗效果
- 阈值: (仅Canny算法) 控制边缘检测的敏感度
使用方法
<template>
<image-to-sketch ref="imageToSketch" @conversion-complete="onConversionComplete" />
</template>
<script>
import ImageToSketch from '@/components/image-to-sketch/image-to-sketch.vue'
export default {
components: {
ImageToSketch
},
methods: {
// 应用预设参数
applyPreset(preset) {
this.$refs.imageToSketch.applyPreset(preset)
},
// 转换完成回调
onConversionComplete(result) {
console.log('转换完成:', result)
}
}
}
</script>
预设参数
组件提供了多种预设参数组合,包括:
- 基础风格:标准线稿、精细线稿、粗犷线稿
- 艺术风格:素描风格、漫画风格、极简风格等
- 现代风格:抽象风格、科技风格、梦幻风格等
- 传统风格:速写风格、工笔画风格、复古风格等
- 高级风格:各种新算法的专门优化参数
- 特殊风格:柔和风格、强烈风格、淡雅风格等
技术实现
- 使用Canvas API进行图片处理
- 支持多种边缘检测算法
- 实时参数调节
- 跨平台兼容(H5、小程序、App)
- 优化的内存使用和性能
更新日志
v2.0.0
- 新增5种边缘检测算法
- 优化算法性能和效果
- 增加高级算法分类
- 改进参数说明和文档