射阳做企业网站哪家好网站建设记录过程
- 作者: 五速梦信息网
- 时间: 2026年04月20日 09:22
当前位置: 首页 > news >正文
射阳做企业网站哪家好,网站建设记录过程,专业的外贸网站建设,建筑公司企业所得税最近做了一个发送消息的unity项目#xff0c;需要访问剪切板里面的图片文字文件等#xff0c;翻遍了网上的东西#xff0c;看了不是需要导入System.Windows.Forms#xff08;关键导入了unity还不好用#xff0c;只能用在纯c#项目中#xff09;#xff0c;所以我看了下py…最近做了一个发送消息的unity项目需要访问剪切板里面的图片文字文件等翻遍了网上的东西看了不是需要导入System.Windows.Forms关键导入了unity还不好用只能用在纯c#项目中所以我看了下pyhton是否有比较好的结果是可以用的把项目打包成了exeunity去调用这个exe就行了。代码如下using System; using UnityEngine; using UnityEngine.UI; using System.Diagnostics; using System.IO; using System.Text; public class HelpPCon : MonoBehaviour { [SerializeField] /// /// 图片信息父物体 /// Transform PicParent_N; [SerializeField] /// summary /// 消息Content /// /summary GameObject MsgContent_N;/// summary /// 文字信息消息预设 /// /summary [SerializeField] GameObject msgTxtPrfab;/// summary /// 图片信息消息预设 /// /summary [SerializeField] GameObject msgTexturePrfab; /// summary /// 下方消息框 /// /summary [SerializeField] InputField IFDDownMsg_N; [SerializeField] Button BtnHelpSend_N; [SerializeField] public Button BtnZhanTie_N; void Awake() {// 添加发送帮助数据按钮点击事件BtnHelpSend_N.onClick.AddListener(SendHelpData);// 添加粘贴数据按钮点击事件BtnZhanTie_N.onClick.AddListener(GetClipboardData); }private void OnEnable() {// 当界面激活时隐藏图片内容HideTextureContant(); }private void Update() {// 监听按下 Ctrl V触发粘贴数据操作if (Input.GetKey(KeyCode.LeftControl) Input.GetKeyDown(KeyCode.V)){GetClipboardData();} }/// summary /// 获取剪贴板数据根据数据类型处理不同的操作 /// /summary void GetClipboardData() {GetClipboardData((str) {// 解析剪贴板数据ClipboardData clipboardData MessageDataProxy.Single.GetClipData(str);switch (clipboardData.type){case TEXT:// 如果是文本类型则将文本显示在消息框中IFDDownMsg_N.text Encoding.UTF8.GetString(clipboardData.data);break;case IMAGE:// 如果是图片类型则显示图片PicParent_N.gameObject.SetActive(true);for (int i 0; i PicParent_N.childCount; i){// 找到未激活的子对象加载图片数据并显示if (PicParent_N.GetChild(i).gameObject.activeSelf false){PicParent_N.GetChild(i).GetComponentRawImage().texture MessageDataProxy.Single.GetTextureFromByte(clipboardData.data);PicParent_N.GetChild(i).gameObject.SetActive(true);break;}}break;case FILE_LIST:// 如果是文件列表类型则尝试加载文件为图片MessageDataProxy.Single.LoadTextureFromFile(clipboardData.data, (b, t) {if (b){// 加载成功则显示图片PicParent_N.gameObject.SetActive(true);for (int i 0; i PicParent_N.childCount; i){if (PicParent_N.GetChild(i).gameObject.activeSelf false){PicParent_N.GetChild(i).GetComponentRawImage().texture t;PicParent_N.GetChild(i).gameObject.SetActive(true);break;}}}else{// 加载失败输出错误信息UnityEngine.Debug.LogError(粘贴板上的文件不是图片格式);}});break;default:break;}}); }/// summary /// 获取剪贴板数据并通过回调函数返回结果 /// /summary /// param namecallback处理剪贴板数据的回调函数/param void GetClipboardData(Actionstring callback) {// 执行外部程序获取剪贴板数据的路径string pythonScriptPath Application.streamingAssetsPath /ReadTex/ReadTex.exe;// 创建一个进程启动信息对象ProcessStartInfo startInfo new ProcessStartInfo();startInfo.FileName pythonScriptPath;startInfo.UseShellExecute false;startInfo.RedirectStandardOutput true;startInfo.CreateNoWindow true;using (Process process Process.Start(startInfo)){// 等待并获取输出using (StreamReader reader process.StandardOutput){string result reader.ReadToEnd();callback?.Invoke(result); // 调用回调函数返回获取的剪贴板数据}} }/// summary /// 隐藏图片内容的容器及其子对象 /// /summary void HideTextureContant() {PicParent_N.gameObject.SetActive(false);for (int i 0; i PicParent_N.childCount; i){PicParent_N.GetChild(i).gameObject.SetActive(false);} }/// summary /// 当所有子物体都隐藏时隐藏自身容器 /// /summary public void HideSelfIfChildHide() {for (int i 0; i PicParent_N.childCount; i){if (PicParent_N.GetChild(i).gameObject.activeSelf){return;}}PicParent_N.gameObject.SetActive(false); }/// summary /// 发送反馈消息将文本和图片信息添加到消息内容中 /// /summary void SendHelpData() {// 添加文本消息if (!string.IsNullOrEmpty(IFDDownMsg_N.text)){GameObject msgTxt GameObject.Instantiate(msgTxtPrfab);msgTxt.transform.SetParent(MsgContent_N.transform);msgTxt.GetComponentText().text IFDDownMsg_N.text;IFDDownMsg_N.text ;}// 添加图片消息for (int i 0; i PicParent_N.childCount; i){if (PicParent_N.GetChild(i).gameObject.activeSelf){GameObject msgTexture GameObject.Instantiate(msgTexturePrfab);msgTexture.transform.SetParent(MsgContent_N.transform);msgTexture.GetComponentRawImage().texture PicParentN.GetChild(i).GetComponentRawImage().texture;}}// 发送完成后隐藏图片内容HideTextureContant(); }} using System; using System.IO; using System.Text; using UnityEngine; [System.Serializable] public class ClipboardData { public string type; // 类型字段用于标识数据类型 public byte[] data; // 数据字节数组 } public class MessageDataProxy { static MessageDataProxy Single; public static MessageDataProxy Single { get { if (Single_ null) Single_ new MessageDataProxy(); return Single_; } } /// summary /// 从JSON数据中获取剪贴板数据对象 /// /summary /// param namejsondataJSON格式的数据字符串/param /// returns剪贴板数据对象/returns public ClipboardData GetClipData(string jsondata) {ClipboardData clipboardData JsonUtility.FromJsonClipboardData(jsondata);return clipboardData; }/// summary /// 从字节数组中加载Texture2D对象 /// /summary /// param nameimageBytes图像的字节数组数据/param /// returns加载后的Texture2D对象/returns public Texture2D GetTextureFromByte(byte[] imageBytes) {Texture2D texture new Texture2D(1, 1); // 创建一个空的Texture2D对象texture.LoadImage(imageBytes); // 加载图像数据到Texture2Dreturn texture; }/// summary /// 从文件中异步加载Texture2D对象并通过回调函数返回结果 /// /summary /// param nameimageBytes文件路径的字节数组数据/param /// param namecallback加载完成后的回调函数参数为是否成功加载和加载后的Texture2D对象/param public void LoadTextureFromFile(byte[] imageBytes, Actionbool, Texture2D callback) {string path Encoding.UTF8.GetString(imageBytes); // 解析字节数组为文件路径字符串if (path.EndsWith(.png) || path.EndsWith(.jpg)){callback?.Invoke(true, LoadTextureFromFile(path)); // 如果路径合法异步加载并调用回调函数}else{callback?.Invoke(false, null); // 如果路径不合法调用回调函数返回加载失败} }/// summary /// 从指定路径加载Texture2D对象 /// /summary /// param namepath图像文件路径/param /// returns加载后的Texture2D对象/returns public Texture2D LoadTextureFromFile(string path) {// 读取本地文件数据byte[] fileData File.ReadAllBytes(path);// 创建一个新的Texture2D对象Texture2D texture new Texture2D(2, 2);// 将图片字节流数据加载到Texture2D对象中texture.LoadImage(fileData);// 返回Texture2D对象return texture; }} python代码如下import win32clipboard import json import logging import os from PIL import Image import io 设置日志记录 logging.basicConfig(filename‘clipboard_data.log’, levellogging.DEBUG, format‘%(asctime)s %(levelname)s %(message)s’) clipboard_type_map { win32clipboard.CF_UNICODETEXT: “TEXT”, win32clipboard.CF_DIB: “IMAGE”, win32clipboard.CF_HDROP: “FILE_LIST”, } def get_clipboard_data(): try: win32clipboard.OpenClipboard() data None for clip_type in clipboard_type_map.keys(): try: data win32clipboard.GetClipboardData(clip_type) if data: data (clipboard_type_map[clip_type], data) break except Exception as e: logging.error(fError retrieving clipboard data: {e}“) pass win32clipboard.CloseClipboard() if data is None: logging.warning(“No data found in clipboard.”) return (‘UNKNOWN’, None) return data except Exception as e: logging.error(fClipboard operation failed: {e}”) return (‘UNKNOWN’, None) 获取剪切板中的内容 clipboard_data get_clipboard_data() 在控制台打印 JSON 数据 if clipboard_data[0] ‘TEXT’: non_utf8_string clipboard_data[1] utf8_bytes non_utf8_string.encode(‘utf-8’) # 将字节数据转换为整数数组 byte_list list(utf8_bytes) text_json { ‘type’: ‘TEXT’, ‘data’: byte_list } print(json.dumps(text_json, ensure_asciiFalse, indent4)) elif clipboard_data[0] ‘IMAGE’: byte_data clipboard_data[1] byteio io.BytesIO(byte_data) image Image.open(byteio) # 将字节数据转换为整数数组 file_name ‘clipboard_image.png’ # 图片文件名这里可以根据需要修改 # 获取当前脚本文件的路径 current_dir os.path.dirname(os.path.abspath(file)) # 构建保存图片的完整路径 file_path os.path.join(current_dir, file_name) image.save(file_path) with open(file_path, “rb”) as img_file: byte_data list(img_file.read()) image_json { ‘type’: ‘IMAGE’, ‘data’: byte_data } print(json.dumps(image_json, ensure_asciiFalse, indent4)) elif clipboard_data[0] ‘FILE_LIST’: non_utf8_string clipboard_data[1][0] utf8_bytes non_utf8_string.encode(‘utf-8’) # 将字节数据转换为整数数组 byte_list list(utf8_bytes) file_list_json {type: FILE_LIST,data: byte_list } print(json.dumps(file_list_json, ensure_asciiFalse, indent4))else: unknown_json { ‘type’: ‘UNKNOWN’, ‘data’: None } print(json.dumps(unknown_json, ensure_asciiFalse, indent4))如果不会pyhton的可以点击获取源码
- 上一篇: 社区自助建站网学校建设网站的目的和意义
- 下一篇: 摄像头怎么做直播网站公路局网站建设方案
相关文章
-
社区自助建站网学校建设网站的目的和意义
社区自助建站网学校建设网站的目的和意义
- 技术栈
- 2026年04月20日
-
社区网站怎么做网站推广好做吗
社区网站怎么做网站推广好做吗
- 技术栈
- 2026年04月20日
-
社区网站免费制作如何建设一个收费的影视图文网站
社区网站免费制作如何建设一个收费的影视图文网站
- 技术栈
- 2026年04月20日
-
摄像头怎么做直播网站公路局网站建设方案
摄像头怎么做直播网站公路局网站建设方案
- 技术栈
- 2026年04月20日
-
摄影个人网站模板杭州网站模板建站
摄影个人网站模板杭州网站模板建站
- 技术栈
- 2026年04月20日
-
摄影工作室网站模板广州网站建设q.479185700棒
摄影工作室网站模板广州网站建设q.479185700棒
- 技术栈
- 2026年04月20日
