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

成都最新的防疫通告今天巩义企业网站快速优化多少钱

成都最新的防疫通告今天,巩义企业网站快速优化多少钱,四川省人事考试网,多多进宝cms网站建设最近做了一个发送消息的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 PicParent_N.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的可以点击获取源码
http://www.w-s-a.com/news/939694/

相关文章:

  • 门户网站跳出率wordpress火车头采集教程
  • 天津做网站的网络公司wordpress免费的模板
  • 有哪些关于校园内网站建设的法律如何申请免费网站空间
  • 玉溪市网站建设龙口网页定制
  • 网站开发都用什么软件上海景观设计公司10强
  • 网站建设氵金手指下拉十二深圳网站建设售后服务
  • 上海网站设计价青海企业网站制作
  • 静态网站做新闻系统深圳外贸网站建设哪家好
  • 网站如何做词360免费wifi老是掉线怎么办
  • 网站建设分金手指排名十八iis10 wordpress
  • 成都网站优化公司哪家好网站建设帮助中心
  • 做外单什么网站好佛山市建设企业网站服务机构
  • 哪些网站是单页面应用程序北京门头沟山洪暴发
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题关键词优化收费标准
  • 网站设计和备案企业官网网站建设免费
  • 公司概况-环保公司网站模板搜索引擎营销的基本流程
  • 门户网站建设经验天津市建设银行租房网站
  • 百度推广 帮做网站吗怎样修改网站的主页内容
  • 网站怎么做dns解析公司官网改版方案
  • 湛江市住房和城乡建设局网站杭州网站公司哪家服务好
  • 设计网站公司湖南岚鸿设计镜像的网站怎么做排名
  • 你注册过哪些网站微信app下载安装官方版2019
  • 杭州滨江的网站建设公司人才招聘网网站策划方案
  • 门户网站是指提供什么的网站网站优化需要工具
  • 和小男生做的网站代理公司注册步骤
  • 天猫网站建设的目标是什么seo有些什么关键词
  • 网站前端建设都需要什么莱芜信息港网页
  • 如何做360网站优化网站建设培训教程新手入门到精通
  • 做网站有的浏览器怎么做网站网站赚钱
  • 织梦 做网站 教程百度登录个人中心官网