[开源初探]screenshot-to-code:将截图转化为代码
介绍说明
将截图转化为 HTML 代码的工具。该项目可以将屏幕截图转化为 HTML/JS/Tailwind CSS 代码,它使用 GPT-4 Vision 生成代码、DALL-E 3 生成相似的图片。

安装运行
为了方便演示及保持原有系统的简洁,将使用 docker 的方式来安装运行 screenshot-to-code。由于项目本身已经提供了 Dockerfile,我们直接使用即可,需要注意的是,该项目有 frontend 和 backend 两个镜像。
克隆代码
git clone https://github.com/abi/screenshot-to-code.git

构建 frontend
cd frontend/ docker build -t screenshot-to-code-frontend:latest -f ./Dockerfile . docker images | grep screenshot-to-code-frontend

构建 backend
cd backend/ docker build -t screenshot-to-code-backend:latest -f ./Dockerfile . docker images | grep screenshot-to-code-backend

运行 frontend
docker rm -f screenshot-to-code-frontend docker run --name screenshot-to-code-frontend -d \
--network host \
-e VITE_WS_BACKEND_URL="ws://{your machine ip}:7001" \
screenshot-to-code-frontend:latest docker ps | grep screenshot-to-code-frontend

运行 backend
docker rm -f screenshot-to-code-backend docker run --name screenshot-to-code-backend -d \
--network host \
-e OPENAI_API_KEY="{your_openai_api_key}" \
screenshot-to-code-backend:latest \
poetry run uvicorn main:app --host 0.0.0.0 --port 7001 docker ps | grep screenshot-to-code-backend

使用简介
经过上述步骤后,screenshot-to-code 已成功运行,此时可通过服务器 IP + 5173 端口访问(需要设置相关安全组或防火墙规则,这里需要设置 5173 和 7001 两个端口)。
主页

手机助手截图

生成过程

查看源码

生成页面

源码
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网页示例</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
body {
font-family: 'PingFang SC', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
}
</style>
</head>
<body class="bg-gray-100">
<div class="flex h-screen">
<!-- Sidebar -->
<div class="w-1/5 bg-gray-800 text-white p-5">
<div class="text-xl mb-8">导航栏目</div>
<div class="text-lg mb-4">首页</div>
<div class="text-lg mb-4">视频</div>
<div class="text-lg mb-4">直播</div>
<div class="text-lg mb-4">QQ空间</div>
<div class="text-lg mb-4">微信公众</div>
<div class="text-lg mb-4">手机天猫</div>
<div class="text-lg mb-4">全球文化</div>
<div class="text-lg mb-4">手机助手</div>
</div> <!-- Main content -->
<div class="w-4/5 p-5">
<div class="flex justify-between border-b-2 border-gray-300 pb-2 mb-5">
<div class="text-gray-700 text-lg">全部应用</div>
<div class="space-x-2">
<button class="bg-blue-500 text-white px-4 py-2 rounded">全部应用</button>
<button class="bg-transparent text-blue-500 border border-blue-500 px-4 py-2 rounded">全部团队</button>
<button class="bg-transparent text-blue-500 border border-blue-500 px-4 py-2 rounded">下载新应用</button>
</div>
</div>
<!-- Placeholder for content -->
<div class="h-full"></div>
</div>
</div>
</body>
</html>
项目地址
更多项目详细信息请到项目主页获取
https://github.com/abi/screenshot-to-code
快捷镜像
ccr.ccs.tencentyun.com/erik_xu/screenshot-to-code-frontend:latest
ccr.ccs.tencentyun.com/erik_xu/screenshot-to-code-backend:latest
写在最后
[开源初探] 是一个介绍有趣开源项目的栏目,如果大家有什么问题或开源推荐,欢迎在文章或者公众号 - 跬步之巅留言交流。
[开源初探]screenshot-to-code:将截图转化为代码的更多相关文章
- 在Mac上使用Visual Studio Code开发/调试.NET Core代码
.Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今天抽空研究了下在Mac下如何使用VS Code来开发.NET Core程序,并且调 ...
- code blocks 如何实现一键代码格式化
问题:code blocks 如何实现一键代码格式化 解答:直接右键,选择format use ASstyle
- Mac上使用Visual Studio Code开发/调试.NET Core代码
Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...
- 02 How to Write Go Code 如何编写go语言代码
How to Write Go Code 如何编写go语言代码 Introduction 介绍 Code organization 组织代码 Overview 概述 Workspaces ...
- 阿里开源的几个中间件 dubbo/RocketMQ/canal/druid 代码还是很不错的
阿里开源的几个中间件 dubbo/RocketMQ/canal/druid 代码还是很不错的
- sketch2code 有的叫screenshot to code什么的
先mark一下项目,回头再深究 https://github.com/mzbac/sketch2code https://www.floydhub.com/emilwallner/datasets/h ...
- Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...
- 使用Visual Studio Code编写和激活ABAP代码 (上)
猪年春节后的第一篇,Jerry祝各位猪年大吉! 2019年的六分之一马上就快过完了,不知道大家在新的一年是否给自己定了新的小目标呢?这里Jerry先预祝大家到2019年年底的时候,在年初制定的小目标都 ...
- VS Code 自动修改和保存 代码风格 == eslint+prettier
最近因为用到VS Code,需要统一所有人的代码风格(前端语言js/html/css等,或者后端语言 go/python等也可以这么用). 所以参考了一些网络资料,记录下设置步骤,以便后续查阅. St ...
- Visual Studio Code 1.44 解决中文代码显示乱码问题(小白图文教程)
现今主流的计算机中文字符编码方案是:GBK和UTF-8. 不同编码方案使用不同的字符集,GBK字符集在中文字符长度和字符数量上存在绝对优势,但对国外字符并不支持.所以,完全面向国内的程序/网页使用的是 ...
随机推荐
- CF1833G Ksyusha and Chinchilla
题目链接 题解 知识点:贪心,树形dp. 当 \(3 \not \mid n\) 时,显然无解. 考虑一种贪心策略,从叶子节点往上只,要以当前节点为根的子树大小能被 \(3\) 整除,就立刻切除这棵子 ...
- java 注解结合 spring aop 实现日志traceId唯一标识
MDC 的必要性 日志框架 日志框架成熟的也比较多: slf4j log4j logback log4j2 我们没有必要重复造轮子,一般是建议和 slf4j 进行整合,便于后期替换为其他框架. 日志的 ...
- Swoole从入门到入土(26)——多进程[进程间锁]
多进程在Swoole中是一个很重要的话题,即是协程机制也是依赖于进程.所以Swoole\Lock让大家在PHP 代码中可以很方便地创建一个锁,用来实现数据同步.Lock 类支持以下 5 种锁的类型: ...
- docker基于commit方式为镜像添加SSH服务
下载启动镜像 docker pull ubuntu: 18.04 docker run -it ubuntu:18.04 bash 配置软件源 备份/etc/apt/sources.list#备份cp ...
- form表单如何实现ajax提交
最近在开发一个游戏网关的后台管理系统,总结了下中间碰到的一些问题. 之一就是:form表单如何实现ajax提交? 问题:在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转, ...
- Java并发编程实例--17.使用read/write锁同步数据访问
锁机制带来的最有意义的改进是提供了ReadWriteLock接口及其实现类ReentrantReadWriteLock. 这个类有2个锁,一个针对读操作另一个针对写操作. 可以有多个线程使用读操作,但 ...
- win32 - 使用Safer API创建受限的令牌
#include <Windows.h> #include <WinSafer.h> #include <stdio.h> #include <sddl.h& ...
- 揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)
## # 3万+长文揭秘一线大厂Redis面试高频考点,整理不易,求一键三连:点赞.分享.收藏 本文,已收录于,我的技术网站 aijiangsir.com,有大厂完整面经,工作技术,架构师成长之路,等 ...
- Celery异步处理任务时遇到的错误ValueError: not enough values to unpack (expected 3, got 0)
开启celery异步,终端命令: celery -A celery_tasks.main worker -l info 如果上面运行后,发送短信码的时候没有报如下错误: ValueError: not ...
- 【LeetCode哈希表#1】有效的字母异位词+赎金信(数组)
有效的字母异位词 力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagr ...