更新记录

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. 保存功能

  • 转换完成后可保存线稿到相册
  • 自动处理权限申请

技术实现

核心算法

  1. 灰度转换:将彩色图片转换为灰度图
  2. 边缘检测:使用梯度算子检测图像边缘
  3. 参数调整:应用对比度和亮度调整
  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 效果最好,抗噪声 计算复杂 高质量要求

注意事项

  1. 性能考虑:图片处理可能较慢,建议添加加载提示
  2. 内存使用:大图片处理时注意内存占用
  3. 平台兼容:不同平台的Canvas API可能有差异
  4. 权限申请:保存图片需要相册权限
  5. 参数调节:不同图片可能需要不同参数,建议先使用预设参数

样式自定义

组件使用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。

支持的算法

基础算法

  1. Sobel边缘检测 - 经典的边缘检测算法,适合大多数图片
  2. Laplacian边缘检测 - 对边缘敏感,适合清晰的图片,但对噪声敏感
  3. Canny边缘检测 - 多阶段算法,效果最好但计算量大,适合高质量要求

新增算法

  1. Prewitt边缘检测 - 类似Sobel但更简单,对噪声敏感,适合快速处理
  2. Roberts边缘检测 - 对角线边缘检测,适合检测对角线特征和细节
  3. Scharr边缘检测 - Sobel的改进版本,精度更高,适合精确边缘检测
  4. LoG边缘检测 - 高斯-拉普拉斯,适合检测圆形边缘和斑点
  5. 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种边缘检测算法
  • 优化算法性能和效果
  • 增加高级算法分类
  • 改进参数说明和文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。