<span style="color: red;">由于远程桌面配置过程较为复杂,若无特殊需求,建议对代码进行相应调整。</span>
VNC(虚拟网络计算)是一种图形桌面共享系统,它使用远程帧缓冲协议 (RFB)远程控制另一台计算机。它通过网络将键盘和鼠标输入从一台计算机传输到另一台计算机,并传递图形屏幕更新。对于一般性的GUI程序运行需求,我们其实可以借助VNC在不安装完整桌面环境的情况下方便快捷的实现,下面介绍如何借助turbovnc工具,在实例中运行一个GUI程序并在本地电脑进行显示:
`` `
流程概览
1.安装VNC和图形显式库
2.用隧道工具代理设置的端口到本地
3.turbovnc客户端下载
4.turbovnc客户端连接
5.使用 1、创建实例
* 首先点击【基础镜像】然后选择 “vnc” 镜像。
* 选择合适的 GPU 资源,点击 【立即创建】,等待完成。
* 在[项目实例]页面中,在刚刚创建的 LAMMPS 镜像实例上,点击【weshell】 
* 进入weshell即可看具体使用
2.安装VNC和图形显式库
`
#添加学术加速
source /root/sj-data/Script/SJ-proxy.sh && proxy_on
`
`
安装依赖包
apt update
apt install -y libglu1-mesa-dev mesa-utils xterm xauth x11-xkb-utils xfonts-base xkb-data libxtst6 libxv1
安装中文字体
apt update && apt install -y fonts-wqy-zenhei
安装libjpeg-turbo和turbovnc
apt install -y libjpeg-turbo8 libjpeg-turbo8-dev
export TURBOVNC_VERSION=3.2.91
wget https://github.com/TurboVNC/turbovnc/releases/download/${TURBOVNC_VERSION}/turbovnc_${TURBOVNC_VERSION}_amd64.deb
dpkg -i turbovnc_${TURBOVNC_VERSION}_amd64.deb
rm -f turbovnc_${TURBOVNC_VERSION}_amd64.deb
#启动VNC服务端,涉及vnc密码配置(注意不是实例的账户密码,需自己输入设置),请记住自己设置的密码。
#如果出现报错xauth未找到,使用apt install xauth再安装一次
rm -rf /tmp/.X1* # 如果再次启动,删除上一次的临时文件,否则无法正常启动
USER=root /opt/TurboVNC/bin/vncserver :1 \
-desktop X \
-auth /root/.Xauthority \
-geometry 1920x1080 \
-depth 24 \
-rfbwait 120000 \
-rfbauth /root/.vnc/passwd \
-fp /usr/share/fonts/X11/misc/,/usr/share/fonts \
-rfbport 6060
检查是否启动,如果有vncserver的进程,证明已经启动
ps -ef | grep vnc
`
3.代理设置以及turbovnc客户端连接
(1)端口代理
上述在算家云平台终端启动server后,设置了rfbport=6060端口,请用SSH隧道工具将实例中的6060端口代理到本地。

也可自行设置端口,需在上面的命令-rfbport 后改端口即可。同样的,改动的端口也需要用隧道工具代理到本地。
(2)客户端的下载
官方下载地址
`
https://github.com/TurboVNC/turbovnc/releases
`
平台提供的下载链接
`
https://suanjiayun.oss-cn-chengdu.aliyuncs.com/download/TurboVNC-3.2.91.exe
https://suanjiayun.oss-cn-chengdu.aliyuncs.com/download/TurboVNC-3.2.91-x86_64.dmg
`
(3)客户端连接
代理好后进入turbovnc下载好后的路径,点击

出现连接页面,填127.0.0.1:6060 (如果设置的是其他端口,按照设置的填)

输入密码。(在终端运行时设置的密码)

4.使用
在终端中添加环境变量:
`
export DISPLAY=:1
`
然后再执行您的命令(注意在同一终端执行)**
可以使用以下python代码进行测试:
` language
import numpy as np
import cv2
from PIL import ImageFont, ImageDraw, Image
import os
尝试加载系统中的中文字体
def get_chinese_font(size=40):
font_candidates = [
"/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc",
"/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",
"/usr/share/fonts/truetype/arphic/ukai.ttc",
"/usr/share/fonts/truetype/arphic/uming.ttc",
]
for path in font_candidates:
if os.path.exists(path):
return ImageFont.truetype(path, size)
raise FileNotFoundError("未找到可用的中文字体,请安装文泉驿、Noto、或 AR PL 字体。")
图像尺寸
h, w = 500, 500
创建黑色背景图像
img = np.zeros((h, w, 3), dtype=np.uint8)
绘制黄色三角形
triangle = np.array([[w//2, 50], [50, h-50], [w-50, h-50]], np.int32).reshape((-1, 1, 2))
cv2.fillPoly(img, [triangle], (0, 255, 255))
转为 PIL 图像以绘制中文
img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img_pil)
获取字体
font_main = get_chinese_font(40) # 中心文字
font_title = get_chinese_font(30) # 标题稍小
绘制中心文字 “算家云”
text = "算家云"
bbox = draw.textbbox((0, 0), text, font=font_main)
text_width, text_height = bbox[2] - bbox[0], bbox[3] - bbox[1]
text_position = (w // 2 - text_width // 2, h // 2 - text_height // 2)
draw.text(text_position, text, font=font_main, fill=(0, 0, 0))
添加顶部标题 “算家计算”
title = "算家计算"
title_bbox = draw.textbbox((0, 0), title, font=font_title)
title_width = title_bbox[2] - title_bbox[0]
title_position = (w // 2 - title_width // 2, 10) # 10px 下边距
draw.text(title_position, title, font=font_title, fill=(255, 255, 255)) # 白色字体
转回 OpenCV 图像格式并显示
img = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)
cv2.imshow("Yellow Triangle with Text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#如果在本地的vnc显示图片,验证成功
`

5.常见问题
a.如缺失包,请自行安装所需的包
`
#例如
pip install numpy
pip install opencv-python
pip install Pillow
``b.想要更换密码或者重连不上,请重新安装环境,再次尝试