牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具
1、背景
在当今快节奏的软件开发环境中,设计师与开发者之间的协同工作显得尤为重要。然而,理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本。为此,开源社区中出现了一个引人注目的项目——screenshot-to-code,它利用AI人工智能技术(机器学习算法和视觉分析技术),将屏幕截图自动转换为前端代码,为设计师和开发者之间的合作开辟了新的可能性。
对于前端开发者来说,这意味着他们可以节省大量的手工编码时间,快速从原型或设计稿进入到实际的开发阶段。例如,设计师可以直接将设计的界面截图上传,然后得到一份初步的代码,这极大地加快了设计到开发的转换速度。此外,这个项目也非常适合用于教育目的,帮助初学者理解UI设计与代码实现之间的联系。
2、项目介绍
screenshot-to-code是一个创新的开源工具,它能够将设计图中的截图自动转化为代码片段,主要用于网页和应用界面的开发。通过上传一张包含设计布局的截图,该工具能够智能解析其中的各种界面元素,如文本、图像、按钮、表格、导航栏等,并依据这些元素的位置、尺寸、颜色以及层次关系,精确地生成结构良好、易于维护的前端代码,包括HTML、CSS,以及React或Vue等前端框架的代码,满足了不同项目的需求。
项目地址:
https://github.com/abi/screenshot-to-code
支持的技术栈有:
- HTML + Tailwind
- React + Tailwind
- Vue + Tailwind
- Bootstrap
- Ionic + Tailwind
- SVG
3、技术原理
首先,让我们了解一下screenshot-to-code项目的工作原理。这个项目利用了AI人工智能技术。当用户上传一个屏幕截图时,系统会首先分析这个截图,识别出其中的各种UI元素,如按钮、文本框、图片等。接着,它会将这些视觉元素转换为相应的HTML标签和CSS样式。如果用户选择的是React或Vue,它还会自动生成对应的组件代码。
具体来讲,screenshot-to-code的核心是基于图像识别的深度学习模型。该模型经过训练,能够理解和解析设计图中的元素,如布局、颜色、字体大小和类型、边距等。模型的工作原理大致如下:
- 图像预处理:首先对输入的截图进行标准化处理,包括调整尺寸、裁剪、灰度化等,以便于模型进行分析。
- 特征提取:模型通过卷积神经网络(CNN)提取图像中的关键特征,如形状、颜色、纹理等。
- 元素识别:基于提取的特征,模型对图像中的界面元素进行识别和分类,如文本、图像、按钮等。
- 布局分析:模型进一步分析元素之间的位置、尺寸、颜色以及层次关系,构建出完整的界面布局。
- 代码生成:最后,模型根据界面布局和元素属性,生成相应的HTML、CSS以及前端框架的代码。
4、使用步骤
首先,你需要拥有一个具有访问GPT-4 Vision权限的OpenAI API密钥。
目前screenshot-to-code支持的AI模型有:
- GPT-4 Turbo (Apr 2024) - Best model
- GPT-4 Vision (Nov 2023) - Good model that’s better than GPT-4 Turbo on some inputs
- Claude 3 Sonnet - Faster, and on par or better than GPT-4 vision for many inputs
- DALL-E 3 for image generation
其次,分别部署后端和后端,
切换到backend目录,创建.env文件并设置您的OpenAI API密钥,然后使用Poetry进行依赖安装和环境启动。
cd backend
echo "OPENAI_API_KEY=sk-your-key" > .env
poetry install
poetry shell
poetry run uvicorn main:app --reload --port 7001
然后运行前端,在frontend目录下,执行 yarn 安装依赖,然后运行 yarn dev 开发服务器。
cd frontend
yarn
yarn dev
打开浏览器访问 http://localhost:5173 使用该应用。
如果希望用Docker部署,只需在根目录下配置好环境变量并将API密钥写入.env文件,然后运行docker-compose命令即可。
echo "OPENAI_API_KEY=sk-your-key" > .env
docker-compose up -d --build
通过以上步骤设置好后,用户就可以上传截图或视频,系统会自动生成对应的代码。
具体展示效果,感兴趣的读者可以参考官方提供的演示视频。
5、小结与展望
screenshot-to-code项目的优势,最明显的是效率的提升,该工具不仅提高了开发效率,减少了沟通成本,还降低了对设计师和开发者技能水平的要求。
传统的开发流程中,将设计转化为代码是一个耗时且重复的工作,而这个项目通过自动化的方式大大缩短了这一过程。此外,它还有助于减少人为错误,提高代码的准确性和一致性。
然而,挑战也是显而易见的。首先,由于技术的局限性,当前的图像识别算法可能无法完美地识别所有的UI元素和样式,特别是在复杂的设计中。其次,自动生成的代码可能需要进一步的调整和优化才能满足实际的业务需求。此外,对于那些追求定制化和高度优化的开发者来说,自动生成的代码可能无法达到他们的要求。
尽管存在一些挑战,但screenshot-to-code项目的潜力是巨大的。随着技术的不断进步,我们可以预见到它的准确度和适用性将会不断提高。未来,随着技术的不断发展和优化,我们期待screenshot-to-code能够在更多领域得到应用和推广,为软件开发带来更多便利和创新。
相关文章:
牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具
1、背景 在当今快节奏的软件开发环境中,设计师与开发者之间的协同工作显得尤为重要。然而,理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本。为此,开源社区中出现了一个引人注目的项目——screenshot-to-code,它利用…...
八种单例模式
文章目录 1.单例模式基本介绍1.介绍2.单例模式八种方式 2.饿汉式(静态常量,推荐)1.基本步骤1.构造器私有化(防止new)2.类的内部创建对象3.向外暴露一个静态的公共方法 2.代码实现3.优缺点分析 3.饿汉式(静态…...
禅道密码正确但是登录异常处理
禅道密码正确,但是登录提示密码错误的异常处理 排查内容 # 1、服务器异常,存储空间、数据库异常 # 2、服务异常,文件丢失等异常问题定位 # 1、df -h 排查服务器存储空间 # 2、根据my.php排查数据库连接是否正常 # 3、修改my.pho,debugtrue…...
Go微服务: Nacos的搭建和基础API的使用
Nacos 概述 文档:https://nacos.io/docs/latest/what-is-nacos/搭建:https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式,我们这里使用 docker 来搭建 Nacos 的搭建 这里,我们选择单机模式…...
基于Hadoop的城市公共交通大数据时空分析
基于Hadoop的城市公共交通大数据时空分析 “Spatio-temporal Analysis of Urban Public Transportation Big Data based on Hadoop” 完整下载链接:基于Hadoop的城市公共交通大数据时空分析 文章目录 基于Hadoop的城市公共交通大数据时空分析摘要第一章 引言1.1 研究背景1.2 …...
DNS服务的部署与配置(2)
1、dns的安装及开启 dnf install bind.x86_64 -y #安装 #Berkeley Internet Name Domain (BIND) systemctl enable --now named #启用dns服务,服务名称叫named firewall-cmd --permanent --add-servicedns #火墙设置 firewall-cmd --reload …...
MySql--SQL语言
目录 SQl---DDL 结构定义 创建、删除 数据库 代码 运行 设计表 数据类型 整数 浮点数 主键 约束 主键自增长 默认值 字段注释 创建、删除 表 代码 运行 代码 代码 运行 SQL---DML 数据操纵 插入数据 代码 运行 代码 运行 代码 运行 代码 …...
【网络安全】2030年十大新兴网络安全威胁
欧盟网络安全局(ENISA)已发布了一份全面的清单,列出了预计到2030年将影响数字领域的十大新兴网络安全威胁。 该预测是为期八个月的广泛研究的成果,融合了ENISA前瞻专家小组、CSIRTs网络以及欧盟CyCLONe专家的见解。 这项研究突显…...
python数据分析-CO2排放分析
导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…...
2024宝藏工具EasyRecovery数据恢复软件免费版本下载
在这个数字化的时代,数据已经成为我们生活中的重中之重。无论是工作中的重要文件,还是手机中珍贵的照片,我们都依赖着这些数据。然而,数据丢失的情况时有发生,可能是误删,可能是设备故障,更可能…...
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并 出错描述 出错原因与解决方案 出错描述 SSE前后端一切正常,但是fetchEventSource 的onmessage回调函数只在所有流都发送完毕后,才会执行一次。 前…...
如何在linux命令行(终端)执行ipynb 文件。可以不依赖jupyter
1.安装 runipy pip install runipy 2.终端运行 runipy <YourNotebookName>.ipynb 在终端命令行执行shell脚本,(也可以在crontab 中执行): (base) [recommendapp-0-5-B-006 script]$ cat run1.sh #!/bin/bashcd /home/recom…...
基于YOLOv8的车牌检测与识别(CCPD2020数据集)
前言 本篇博客主要记录在autodl服务器中基于yolov8实现车牌检测与识别,以下记录实现全过程~ yolov8源码:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 一、环境配置 …...
驱动开发之新字符设备驱动开发
1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的 字符设备驱动已经不再使用这两个函数,而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用,感兴趣可以看下面这个博客&#…...
【JMU】21编译原理期末笔记
本拖延症晚期患者不知不觉已经有半年没写博客了,天天不知道在忙什么。 乘着期末周前赶紧先把编译原理上传了,我记得我这科是86分,有点小遗憾没上90,但是总体不错。 链接:https://pan.baidu.com/s/1gO8pT7paHv1lkM_ZpkI…...
就业信息|基于SprinBoot+vue的就业信息管理系统(源码+数据库+文档)
就业信息管理系统 目录 基于SprinBootvue的就业信息管理系统 一、前言 二、系统设计 三、系统功能设计 1前台功能模块 2后台功能模块 4.2.1管理员功能 4.2.2学生功能 4.2.3企业功能 4.2.4导师功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…...
一.架构设计
架构采用 ddd 架构,不同于传统简单的三层的架构,其分层的思想对于大家日后都是很有好处的,会给大家的思想层级,提高很多。 传统的项目 现有的架构 采取ddd架构,给大家在复杂基础上简化保留精髓,一步步进行…...
<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript
由Anaconda创建的PyScript是一项实验性的但很有前途的新技术,它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly,这是许多言语(如C、C和Rust)能够编译的高速运转时…...
Vue项目中npm run build 卡住不执行的几种情况(实战版)
方法一 一:比较常见是镜像导致的原因 我们可以找到build/check-versions文件 将这段代码注释,重新运行就可以解决这个问题 if (shell.which(npm)) {versionRequirements.push({name: npm,currentVersion: exec(npm --version),versionRequirement: packageConfig.en…...
《Python源码剖析》之pyc文件
前言 前面我们主要围绕pyObject和pyTypeObject聊完了python的内建对象部分,现在我们将开启新的篇章—python虚拟机,将聚焦在python的执行部分,搞懂从“代码”到“执行”的过程。开启新的篇章之前,你也许会有一个疑惑:我…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
