更新记录

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协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问