当前位置: 首页 > news >正文

牛逼!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 的搭建 这里,我们选择单机模式&#xf…...

基于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脚本&#xff0c;&#xff08;也可以在crontab 中执行&#xff09;&#xff1a; (base) [recommendapp-0-5-B-006 script]$ cat run1.sh #!/bin/bashcd /home/recom…...

基于YOLOv8的车牌检测与识别(CCPD2020数据集)

前言 本篇博客主要记录在autodl服务器中基于yolov8实现车牌检测与识别&#xff0c;以下记录实现全过程~ yolov8源码&#xff1a;GitHub - ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreML > TFLite 一、环境配置 …...

驱动开发之新字符设备驱动开发

1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数&#xff0c;现在新的 字符设备驱动已经不再使用这两个函数&#xff0c;而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用&#xff0c;感兴趣可以看下面这个博客&#…...

【JMU】21编译原理期末笔记

本拖延症晚期患者不知不觉已经有半年没写博客了&#xff0c;天天不知道在忙什么。 乘着期末周前赶紧先把编译原理上传了&#xff0c;我记得我这科是86分&#xff0c;有点小遗憾没上90&#xff0c;但是总体不错。 链接&#xff1a;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 架构&#xff0c;不同于传统简单的三层的架构&#xff0c;其分层的思想对于大家日后都是很有好处的&#xff0c;会给大家的思想层级&#xff0c;提高很多。 传统的项目 现有的架构 采取ddd架构&#xff0c;给大家在复杂基础上简化保留精髓&#xff0c;一步步进行…...

<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript

由Anaconda创建的PyScript是一项实验性的但很有前途的新技术&#xff0c;它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly&#xff0c;这是许多言语&#xff08;如C、C和Rust&#xff09;能够编译的高速运转时…...

Vue项目中npm run build 卡住不执行的几种情况(实战版)

方法一 一&#xff1a;比较常见是镜像导致的原因 我们可以找到build/check-versions文件 将这段代码注释,重新运行就可以解决这个问题 if (shell.which(npm)) {versionRequirements.push({name: npm,currentVersion: exec(npm --version),versionRequirement: packageConfig.en…...

《Python源码剖析》之pyc文件

前言 前面我们主要围绕pyObject和pyTypeObject聊完了python的内建对象部分&#xff0c;现在我们将开启新的篇章—python虚拟机&#xff0c;将聚焦在python的执行部分&#xff0c;搞懂从“代码”到“执行”的过程。开启新的篇章之前&#xff0c;你也许会有一个疑惑&#xff1a;我…...

告别高分屏适配烦恼:从开发者视角详解Win10/Win11程序属性中的DPI设置原理

告别高分屏适配烦恼&#xff1a;从开发者视角详解Win10/Win11程序属性中的DPI设置原理在4K/5K显示器逐渐成为主流的今天&#xff0c;Windows开发者面临着一个看似简单却暗藏玄机的问题&#xff1a;为什么同一个应用在不同分辨率的屏幕上显示效果天差地别&#xff1f;更令人困惑…...

基于动态生物标志物变化率的生物年龄预测:LightGBM模型与纵向数据分析实践

1. 项目概述与核心价值在预防医学和健康管理领域&#xff0c;我们常常面临一个根本性的难题&#xff1a;如何准确评估一个人的“真实”衰老程度&#xff1f;我们都知道&#xff0c;身份证上的“时序年龄”只是一个粗略的刻度&#xff0c;两个同龄人&#xff0c;一个可能精力充沛…...

别再只会用cp了!用dd命令给硬盘做‘全身体检’和‘克隆手术’(附实战命令)

别再只会用cp了&#xff01;用dd命令给硬盘做‘全身体检’和‘克隆手术’&#xff08;附实战命令&#xff09;在Linux系统管理中&#xff0c;文件复制是最基础的操作之一。大多数用户习惯使用cp命令完成日常的文件复制任务&#xff0c;但当面对磁盘级操作时&#xff0c;cp就显得…...

吉利银河星耀7 MAX上市:零百加速5.4秒 指导价9.88万起

雷递网 乐天 5月24日吉利银河旗下全新中级豪华电混轿车——吉利银河星耀7 MAX正式上市。新车全系标配四驱&#xff0c;有220km四驱星耀版、220km四驱探索版、220km四驱领航版、220km四驱远航版4个版本&#xff0c;同时&#xff0c;官方还提供四驱远航版两驱反选权益&#xff0c…...

Keil MDK优化级别设置与嵌入式开发性能调优

1. UVISION项目优化级别设置全解析在嵌入式开发领域&#xff0c;代码优化是提升性能、减少体积的关键环节。Keil MDK作为ARM架构的主流开发环境&#xff0c;提供了从项目全局到单个函数的多层级优化控制能力。本文将深入剖析如何在Vision环境中精细控制优化级别&#xff0c;帮助…...

Claude Code 接入 DeepSeek

安装 Claude Code DeepSeek 文档&#xff1a; 使用如下命令安装 Claude Code: npm install -g anthropic-ai/claude-code安装完成后&#xff0c;可以输入下面的命令检查是否安装成功。 claude --version购买 DeepSeek API 创建 Api Key 点击如下链接创建 DeepSeek API Ke…...

Qwen模型 LeetCode 2608. 图中的最短环 Java实现

哎呀&#xff0c;2608. 图中的最短环&#xff01;这题可有意思了&#xff5e;我第一次做时也卡了好一会儿&#xff0c;后来发现用 **BFS 枚举每条边 临时删除** 的思路特别清爽&#xff01;### &#x1f31f; 核心思想&#xff1a; - 对于每一条边 (u, v)&#xff0c;我们**暂…...

2026保姆级免费照片去水印教程:不用下载App,微信小程序3步搞定!

你是不是也遇到过这种崩溃瞬间&#xff1f;刷到一张绝美壁纸想存下来当背景&#xff0c;结果水印刚好挡住主角的脸&#xff1b;看到一段搞笑视频想转发给朋友&#xff0c;结果水印横在中间像个挡箭牌&#xff1b;想拿一张素材做作业PPT&#xff0c;结果水印比内容还显眼。更烦的…...

技术人的沟通技巧:如何与非技术人员有效沟通

技术人的沟通技巧&#xff1a;如何与非技术人员有效沟通 引言 作为一名技术人&#xff0c;我们不仅需要具备扎实的技术能力&#xff0c;还需要具备良好的沟通能力。特别是当我们需要与非技术人员沟通时&#xff0c;如何将复杂的技术问题用简单易懂的语言表达出来&#xff0c;是…...

鸿蒙健身计划页面构建:训练英雄区与今日训练模块详解

鸿蒙健身计划页面构建&#xff1a;训练英雄区与今日训练模块详解 前言 在 HarmonyOS 6.0 应用开发中&#xff0c;健身类页面的核心挑战在于如何展示训练进度、训练目标和实时数据。本文将以“健身计划”应用的主页面为例&#xff0c;深入解析如何在鸿蒙平台上构建健身管理类应用…...