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

修图自由!自建IOPaint服务器,手机平板随时随地远程调用在线P图

前言:在这个人人都想当摄影师的时代,一张完美的照片简直比中彩票还难。但别担心,今天我来给大家揭秘一个超级神器——IOPaint!这款免费开源的AI工具不仅能一键移除照片中的杂物和路人,还能智能扩展图片内容,让你的照片瞬间高大上。更重要的是,我们还将手把手教你如何在本地Windows系统上轻松部署它,并利用Cpolar内网穿透工具实现随时随地查看和管理你的作品库。无论你是摄影小白还是资深玩家,IOPaint绝对是你修图路上的得力助手!

目录

 1.什么是IOPaint?

 2.本地部署IOPaint

3.IOPaint简单实用

4.公网远程访问本地IOPaint

 5.内网穿透工具安装

6.配置公网地址

7.使用固定公网地址远程访问


**【视频教程】**

1分钟安装轻松去水印神器IOPaint与远程使用

 1.什么是IOPaint?

IOPaint 是一个基于深度学习的图像处理工具,它的全称是 "Inpainting with Object Removal"(带有对象移除功能的修复)。IOPaint 的核心功能包括:

1. **对象移除**:你可以轻松地擦除照片中的任何不需要的对象或元素。无论是广告牌、路人还是其他干扰物,只需几笔就能消失无踪。

2. **图像修补**:如果你的照片上有划痕、污渍或其他损坏,IOPaint 能够智能地填补这些区域,恢复原始的视觉效果。

3. **内容扩展**:有时候你可能觉得照片中的某个部分不够大或者不够完整,IOPaint 可以帮你扩展这部分的内容,让画面更加丰富和自然。

 2.本地部署IOPaint

我这里演示的是在windows系统安装和运行,运行的环境需要有node.js和Anaconda

node.js下载地址:[Node.js — 在任何地方运行 JavaScript](https://nodejs.org/zh-cn)

Anaconda下载地址:[Anaconda | The Operating System for AI](https://www.anaconda.com/)

首先打开左下角Anaconda的终端,创建一个python环境


```shellconda create -n iopaint python=3.12```

输入Y确定

```shellconda activate iopaint```

先从github上克隆仓库

```shellgit clone https://github.com/Sanster/IOPaint.git```

进入到项目中

```shellcd IOPaint/web_app```

安装前端项目依赖


```shellnpm install```

再编译前端项目


```shellnpm run build```

复制编译好的前端项目文件到iopaint/web_app目录

```shellxcopy /E /I dist\ ..\iopaint\web_app\```

创建一个配置文件,填写后端IP和端口

```shellecho VITE_BACKEND=http://127.0.0.1:8080 > .env.local```

接下来进入到上一级目录里,安装后端项目依赖

```shellcd ..``````shellpip install -r requirements.txt```

输入这行命令启动后端服务

```shellpython main.py start --model lama --port 8080```

重新开启一个终端,进入到项目中

```shellcd IOPaint/web_app```

启动前端开发环境


```shellnpm run dev```

现在,IOPaint已经启动成功了!打开浏览器,输入localhost:5173,就可以看到IOpaint的界面了

3.IOPaint简单实用

打开一张需要处理的照片,直接涂抹需要删除的对象或区域。

IOPaint会自动识别并处理,几秒钟后,你就能看到焕然一新的照片!

4.公网远程访问本地IOPaint

目前我们在本地成功部署了IOPaint,但是如果我们想实现不在局域网下,在公网能够远程访问IOPaint的话,我们就可以使用Cpolar内网穿透来实现公网随时随地访问了!免去了复杂得本地部署过程,只需要一个公网地址直接就可以访问。

 5.内网穿透工具安装

下面是安装cpolar步骤:

> Cpolar官网地址: [https://www.cpolar.com](https://www.cpolar.com/)

点击进入cpolar官网,点击`免费使用`注册一个账号,并下载最新版本的Cpolar。

登录成功后,点击下载Cpolar到本地并安装(一路默认安装即可)本教程选择下载Windows版本。

Cpolar安装成功后,在浏览器上访问http://localhost:9200,使用cpolar账号登录,登录后即可看到Cpolar web 配置界面,结下来在web 管理界面配置即可。

接下来配置一下IOPaint的公网地址~

6.配置公网地址

登录后,点击左侧仪表盘的隧道管理——创建隧道,

创建一个IOPaint的公网http地址隧道

- 隧道名称:可自定义命名,注意不要与已有的隧道名称重复

- 协议:选择http

- 本地地址:5173(本地访问的地址)

- 域名类型:免费选择随机域名

- 地区:选择China VIP

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http和https。

使用上面的Cpolar生成的任意一个公网地址,在手机或任意设备的浏览器进行登录访问,即可成功看到IOPaint界面。使用了Cpolar的公网域名,无需自己购买云服务器,即可到公网访问IOPaint随便编辑图片啦!

**小结**

为了方便演示,我们在上边的操作过程中使用了cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。如果有长期远程访问本地IOPaint服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的二级子域名方式来远程访问。

7.使用固定公网地址远程访问

[登录cpolar官网](https://dashboard.cpolar.com/),点击左侧的预留,选择保留二级子域名,地区选择China top,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是iopaint,大家也可以自定义喜欢的名称。

保留成功后复制保留成功的二级子域名的名称:iopaint,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道iopaint,点击右侧的编辑:

修改隧道信息,将保留成功的二级子域名配置到隧道中

- 域名类型:选择二级子域名

- Sub Domain:填写保留成功的二级子域名:iopaint

- 地区:选择China top

点击`更新`(注意,点击一次更新即可,不需要重复提交)

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

最后,我们使用固定的公网https地址在任何浏览器打开访问,可以看到访问IOPaint成功了这样一个固定且永久不变的公网地址就设置好了。

## 总结

通过本文的介绍,相信你已经掌握了在本地Windows系统上部署IOPaint的方法,并领略了Cpolar内网穿透工具的强大功能。从此以后,无论是身处世界的哪个角落,你都可以随时查看和管理你的作品库,再也不用为公网IP或云服务器发愁了。有了IOPaint和Cpolar的加持,你就是朋友圈中最会修图的那个大神!快来试试吧,让你的照片瞬间变得与众不同!

相关文章:

修图自由!自建IOPaint服务器,手机平板随时随地远程调用在线P图

前言:在这个人人都想当摄影师的时代,一张完美的照片简直比中彩票还难。但别担心,今天我来给大家揭秘一个超级神器——IOPaint!这款免费开源的AI工具不仅能一键移除照片中的杂物和路人,还能智能扩展图片内容&#xff0c…...

PyTorch实现二维卷积与边缘检测:从原理到实战

本文通过PyTorch实现二维互相关运算、自定义卷积层,并演示如何通过卷积核检测图像边缘。同时,我们将训练一个卷积核参数,使其能够从数据中学习边缘特征。 1. 二维互相关运算的实现 互相关运算(Cross-Correlation)是卷…...

解决Server doesn‘t support Accept-Ranges问题

Cannot download differentially, fallback to full download: Error: Server doesnt support Accept-Ranges (response code 200) 解决方案 修改nginx配置文件支持Accept-Ranges(范围请求) server {...location ^~/ {default_type multipart/byterang…...

处理Excel表不等长时间序列用tsfresh提取时序特征

我原本的时间序列格式是excel表记录的,每一行是一条时间序列,时间序列不等长。 要把excel表数据读取出来之后转换成extract_features需要的格式。 1.读取excel表数据 import pandas as pd import numpy as np from tsfresh import extract_features mda…...

Linux __命令和权限

目录 一、几个指令 bc uname -r 指令 重要的几个热键 二、Shell命令以及运行原理 为什么有外壳 外壳是如何工作的 什么是操作系统,为什么要有操作系统 三、文件类型 1、Linux的文件类型 2、文件类型 四、用户 用户问题和切换问题 增加普通用户 root -&…...

IO流——字符输入输出流:FileReader FileWriter

一、文件字符输入流:FileReader 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去 public class Test5 {public static void main(String[] args) {try (Reader fr new FileReader("E:\\IDEA\\JavaCodeAll\\file-io-t…...

【大模型理论篇】DeepResearcher论文分析-通过在真实环境中的强化学习实现深度研究

1. 背景与问题 大模型(LLMs)配合网络搜索功能已经展现出在深度研究任务中的巨大潜力。然而,目前的方法主要依赖两种途径: 人工设计的提示工程(Prompt Engineering):这种方法依靠手动设计的工作流…...

大数据(7.5)Kafka Edge在5G边缘计算中的革新实践:解锁毫秒级实时处理的无限可能

目录 一、5G时代边缘计算的算力革命1.1 传统架构的延迟困境1.2 5G网络特性与Kafka适配 二、Kafka Edge核心架构设计2.1 分层处理架构2.2 关键技术创新点2.2.1 协议优化2.2.2 轻量化存储引擎 三、5G场景落地实践3.1 智能工厂预测性维护3.2 全息远程医疗会诊 四、性能优化深度实践…...

【基于开源insightface的人脸检测,人脸识别初步测试】

简介 InsightFace是一个基于深度学习的开源人脸识别项目,由蚂蚁金服的深度学习团队开发。该项目提供了人脸检测、人脸特征提取、人脸识别等功能,支持多种操作系统和深度学习框架。本文将详细介绍如何在Ubuntu系统上安装和实战InsightFace项目。 目前github有非常多的人脸识…...

kafka怎么保证消息不被重复消费

在 Kafka 中,要保证消息不被重复消费,可从消费者端和生产者端分别采取不同策略,下面为你详细介绍: 消费者端实现幂等消费 幂等消费是指对同一条消息,无论消费多少次,产生的业务结果都是一样的。 业务层面…...

一个批量文件Dos2Unix程序(Microsoft Store,开源)

这个程序可以把整个目录的文本文件改成UNIX格式,源码是用C#写的。 目录 一、从Microsoft Store安装 二、从github获取源码 三、功能介绍 3.1 运行 3.2 浏览 3.3 转换 3.4 转换(无列表) 3.5 取消 3.6 帮助 四、源码解读 五、讨论和…...

Python及Javascript的map 、 filter 、reduce类似函数的对比汇总

A. 在Python中,map 和 filter 是两个非常有用的内置函数,它们分别用于对可迭代对象中的每个元素执行某种操作,并返回结果。在JavaScript中,虽然没有内置的 map 和 filter 函数,但是可以使用数组的 map() 和 filter() …...

Linux中OS的管理和进程的概念

一、OS的管理 1.1操作系统宏观的理解 OS的本质是一款进行资源管理的软件 图示: 1.2OS存在的意义 1.2.1计算机的分层式管理结构 最底层的硬件部分遵循“冯诺依曼体系” ,每一种硬件都在驱动层中有着自己对应的“驱动程序” 在OS中,驱动管…...

Spring定时任务修仙指南:从@Scheduled到分布式调度的终极奥义

各位被Thread.sleep()和while(true)折磨的Spring道友们!今天要解锁的是Spring生态自带的定时任务三件套——Scheduled、TaskScheduler、Async定时组合技!无需引入外部依赖,轻松实现从简单定时到分布式调度的全场景覆盖!准备好抛弃…...

Node.js多版本共存管理工具NVM(最新版本)详细使用教程(附安装包教程)

目录 前言 一、Nvm下载 二、Nvm安装 三、配置nodeJS 前言 NVM(Node Version Manager)是一个用于管理多个Node.js版本的工具,主要帮助开发者在同一设备上轻松安装、切换和卸载不同版本的Node.js,解决项目间版本冲突问题。 一、…...

管道魔法木马利用Windows零日漏洞部署勒索软件

微软披露,一个现已修复的影响Windows通用日志文件系统(CLFS)的安全漏洞曾被作为零日漏洞用于针对少数目标的勒索软件攻击中。 01 攻击目标与漏洞详情 这家科技巨头表示:"受害者包括美国信息技术(IT&#xff09…...

Devops之Argo:Argo 是什么,和现在常用的Jenkins之间的区别

Argo CD(Argo Continuous Delivery 的缩写)是一款基于 GitOps 的声明式 Kubernetes 持续交付工具。它提供了一种以 Git 为中心的方法来管理和部署应用程序到 Kubernetes 集群。Argo CD 遵循 GitOps 的原则,即将应用程序的预期状态存储在 Git …...

从 60 FPS 掉帧到 7.6 倍提速Rust + WebAssembly 优化《生命游戏》的实战指南

一、构建 FPS 统计器:用 performance.now() 实时观察性能变化 要优化,就要先 测量。我们在 JavaScript 端添加一个 fps 对象,结合 performance.now() 来监控每一帧的耗时,并统计最近 100 帧的平均 FPS、最小 FPS、最大 FPS&#…...

jmeter 集成ZAP进行接口测试中的安全扫描 实现方案

以下是将 JMeter 集成 ZAP(OWASP Zed Attack Proxy)进行接口测试中安全扫描的实现方案: 1. 环境准备 JMeter 安装:从 JMeter 官方网站(https://jmeter.apache.org/download_jmeter.cgi)下载并安装 JMeter,确保其版本稳定。ZAP 安装:从 ZAP 官方网站(https://www.zapr…...

Hyperlane 文件分块上传服务端

Hyperlane 文件分块上传服务端:高效、可靠、易用的文件上传解决方案 引言 在现代 Web 开发中,文件上传是许多应用的核心功能之一。然而,随着文件大小的增加和网络环境的复杂性,传统的单次文件上传方式已经难以满足需求。Hyperla…...

BT面板docker搭建excalidraw遇到的问题

1.傻瓜式拉取镜像 2.点击创建容器 3.暴露端口 4.放行端口和服务器安全组,如果用的是轻量型服务器,那就关闭防火墙 下面放图...

Qt之OpenGL使用Qt封装好的着色器和编译器

代码 #include "sunopengl.h"sunOpengl::sunOpengl(QWidget *parent) {}unsigned int VBO,VAO; float vertices[]{0.5f,0.5f,0.0f,0.5f,-0.5f,0.0f,-0.5f,-0.5f,0.0f,-0.5f,0.5f,0.0f };unsigned int indices[]{0,1,3,1,2,3, }; unsigned int EBO; sunOpengl::~sunO…...

【仿Mudou库one thread per loop式并发服务器实现】项目介绍+前置技术知识点

HTTP协议模块实现 1. 项目实现的目标2. 项目储备知识2.1 HTTP服务器2.2 Reactor模型 3. 功能模块划分3.1 SERVER模块3.1.1 Buffer模块3.1.2 Socket模块3.1.3 Channel模块3.1.4 Poller模块3.1.5 EventLoop模块3.1.6 Connection模块3.1.7 7. Acceptor模块3.1.8 TimerQueue模块3.1…...

Open Interpreter:重新定义人机交互的开源革命

引言 在人工智能技术蓬勃发展的今天,人机交互的方式正经历着前所未有的变革。Open Interpreter,作为一个开源项目,正在重新定义我们与计算机的互动方式。它允许大型语言模型(LLMs)在本地运行代码,通过自然…...

Shell编程之条件语句

目录 一.条件测试操作 1.文件测试 2.整数值比较 3.字符串比较 4.逻辑测试 二:if条件语句 1.if语句的结构 (1)单分支if语句 (2)双分支if语句 (3)多分支if语句 2.if语句应用示例 &…...

Python编程快速上手 让繁琐工作自动化笔记

编程基础 字符串使用单引号...

高性能文件上传服务

高性能文件上传服务 —— 您业务升级的不二选择 在当今互联网数据量激增、文件体积日益庞大的背景下,高效、稳定的文件上传方案显得尤为重要。我们的文件分块上传服务端采用业界领先的 Rust HTTP 框架 Hyperlane 开发,凭借其轻量级、低延时和高并发的特…...

【从零开始学习JVM | 第二篇】HotSpot虚拟机对象探秘

对象的创建 1.类加载检查 虚拟机遇到一条new的指令,首先去检查这个指令的参数能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行类的加载过程。 2.分配内存 在类…...

浅谈前端开发中的 npm、cnpm、pnpm、yarn各自特点

在前端开发中的 npm、cnpm、pnpm、yarn 等工具都是包管理器(Package Manager),用于安装/更新/卸载 JavaScript 项目的依赖。 下面我详细地给你梳理下这些包管理器的作用、特点和适用场景👇 一. npm(Node Package Mana…...

【数据结构】包装类和泛型

目录 1.包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 2.泛型 2.1泛型的概念 2.2引出泛型 3.语法 4.泛型类的使用 5.泛型的上界 1.包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基…...

红帽9运行容器一

运行容器:容器概念,构建,存储和运行容器的核心技术(用户资源管理的控制组,进程隔离的命名空间,加强安全边界的SELinux和Seccomp) 软件运行需要环境,系统库,配置文件和服…...

使用poi+itextpdf把word转成pdf

使用 Apache POI 和 iTextPDF 将 Word 转换为 PDF 需要分两步操作:先用 POI 读取 Word 内容,再用 iText 生成 PDF。 apache poi官方文档:Apache POI™ - Javadocs 以下是详细的代码实现示例: 环境准备 在 pom.xml 中添加依赖: …...

民安智库:开启零售行业客户满意度提升新征程​

在当今这个瞬息万变的商业世界中,零售市场的竞争愈发激烈,犹如一场没有硝烟的战争。各大零售企业为了抢占市场份额,纷纷使出浑身解数,从商品种类的丰富到店铺环境的优化,从价格策略的调整到服务质量的提升,…...

自行搭建一个Git仓库托管平台

1.安装Git sudo apt install git 2.Git本地仓库创建(自己选择一个文件夹) git init 这里我在 /home/test 下面初始化了代码仓库 1. 首先在仓库中新建一个txt文件,并输入一些内容 2. 将文件添加到仓库 git add test.txt 执行之后没有任何输…...

无锡无人机超视距驾驶证怎么考?

无锡无人机超视距驾驶证怎么考?在近年来,无人机技术的迅猛发展使得无人机的应用场景变得愈发广泛,其不仅在环境监测、农业喷洒、快递配送等领域展现出真金白银的价值,同时也推动了无人机驾驶证的需求。尤其是在无锡,随…...

pyautogui是什么:自动化鼠标和键盘操作

pyautogui是什么:自动化鼠标和键盘操作 目录 pyautogui是什么:自动化鼠标和键盘操作安装方法主要功能及使用示例1. 鼠标操作2. 键盘操作3. 获取屏幕信息应用场景注意事项pyautogui 是一个用于自动化鼠标和键盘操作的 Python 第三方库,它允许开发者通过编写 Python 代码来模拟…...

小白学习java第12天:IO流之缓冲流

1.IO缓冲流: 之前我们学习的都是原始流(FileInputStream字节输入流、FileOutputStream字节输出流、FIleReader字符输入流、FIleWriter字符输出流)其实我们可以知道对于这些其实性能都不是很好,要么太慢一个一个,要么就…...

智能导诊系统方案:人体画像导诊实现从症状到科室推荐及院内导航链路拆解(python示范 TensorFlow Embedding 层源码)

本文面向医院信息科负责人、医疗AI开发者、医院管理者,解决传统分诊依赖人工经验,效率低且易出错;患者跨科室就诊路径不清晰等痛点问题,实现症状到科室的精准推荐及动态导航链路优化。 如需获取智慧医院导航导诊系统解决方案请前往…...

声学测温度原理解释

已知声速,就可以得到温度。 不同温度下的胜诉不同。 25度的声速大约346m/s 绝对温度-273度 不同温度下的声速。 FPGA 通过测距雷达测温度,固定测量距离,或者可以测出当前距离。已知距离,然后雷达发出声波到接收到回波的时间&a…...

30天学Java第九天——线程

并行与并发的区别 并行是多核 CPU 上的多任务处理,多个任务在同一时间真正的同时执行并发是单核 CPU 上的多任务处理,多个任务在同一时间段内交替执行,通过时间片轮转实现交替执行,用于解决 IO 密集型任务的瓶颈 线程的创建方式…...

SaaS微服务架构的智慧工地源码,基于Spring Cloud +UniApp +MySql开发

基于微服务架构JavaSpring Cloud UniApp MySql技术开发,saas模式的一套智慧工地云平台源码,支持多端展示:PC端、大屏端、手机端、平板端。包含项目人员管理、视频监控管理、危大工程监管、绿色施工管理、现场物料管理、安全隐患排查等功能。 …...

Qt学习笔记——TableWidget的一些学习东西

TableWidget的一些学习东西 使用QtDesigner绘制表格,但是表格出现很多问题,烦死了,整理了一些内容。 在使用 Qt Designer 设置 QTableWidget 时,涉及大量属性选项,尤其是在初学阶段常常因为属性设置不当而导致表格显…...

《Uniapp-Vue 3-TS 实战开发》Pinia 及 Pinia 持久化

前言: 正文: 一、Pinia 基础用法 1. 安装与初始化 bash npm install pinia # 或 yarn add pinia 在 main.js/ts 中初始化: import { createApp } from vue import { createPinia } from pinia import App from ./App.vue const app = createApp(App) app.use(createPinia()…...

JAVA:SpringBoot 实现图片防盗链的技术指南

1、简述 防盗链(Hotlink Protection)是一种保护网站资源不被其他网站直接引用的技术,特别是在图片、视频等静态资源方面。防盗链的核心思想是检查请求的来源(Referer),只允许来自指定域名的请求访问资源。 在 Spring Boot 中,我们可以通过拦截器(Interceptor)或过滤…...

量子指纹识别

场景设定 某金融机构部署量子指纹认证系统,要求用户通过手机(传感器A)注册指纹,并在ATM机(传感器B)完成量子安全认证。系统需满足: 抗模板泄露:即使数据库被攻破,攻击者…...

图像变换方式区别对比(Opencv)

1. 变换示例 import cv2 import matplotlib.pyplot as plotimg cv2.imread(url) img_cut img[100:200, 200:300] img_rsize cv2.resize(img, (50, 50)) (hight,width) img.shape[:2] rotate_matrix cv2.getRotationMatrix2D((hight//2, width//2), 50, 1) img_wa cv2.wa…...

快速上手Linux联网管理

RHEL9版本特点 在RHEL7版本中,同时支持network.service和NetworkManager.service(简称NM)。在RHEL8上默认只能通过NM进行网络配置,包括动态ip和静态ip,若不开启NM,否则无法使用网络RHEL8依然支持network.service&…...

加速度计芯片的主要参数定义、计算、测试方法

加速度计的主要参数包括量程、分辨率、灵敏度、输出数据速率、接口类型、功耗、噪声等。量程决定了加速度的测量范围,比如2g到16g,不同的应用需要不同的量程。分辨率关系到能检测到的最小变化,通常用位数表示,比如12位或16位。灵敏…...

FFMPEG大文件视频分割传输教程,微信不支持1G文件以上

如下是一个2.77g的文件分割教程 . 前言 FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。 2. 下载 FF…...

interfaceResidue:一款用于分析蛋白复合物“接触界面残基”的pymol插件

当我们使用AF3或其他结构预测工具获得蛋白复合物后,逃不掉的一步就是分析接触界面的残基互作,而分析互作的前提是要准确地识别出接触界面上的残基有哪些,如果手动找则太耗费精力而且也容易遗漏。本期向大家安利的这样一款pymol插件&#xff0…...