//bitmap 图像 import gdi; import gdip.bitmap; import win.clip; import win.clip.png; import win.clip.html; import string.html; import crypt; import inet.urlData; import inet.url; namespace win.clip.bitmap; test = function(){ if( ..win.clip.test(2/*_CF_BITMAP*/,..win.clip.png.format) ) return true; if( ..win.clip.html.test() ){ var htmlCb = ..win.clip.html(); if( htmlCb.read() ){ var htmlDoc = ..string.html(htmlCb.fragment); var src = htmlDoc.queryEle(tagName="img")[["src"]]; return !!(..inet.urlData.parse(src) || ..inet.url.getFilePath(src)); } } } read = function(){ var png = ..win.clip.png.read(); if(png){ return ..gdip.bitmap(png); } var htmlCb = ..win.clip.html(); if( htmlCb.read() ){ var htmlDoc = ..string.html(htmlCb.fragment); var ele = htmlDoc.queryEle(tagName="img");; var data = ..inet.urlData.parse(ele[["src"]]); if(data){ return ..gdip.bitmap(data); } var path = ..inet.url.getFilePath(ele[["src"]]) if(path){ var data = ..string.loadBuffer(path); if(data){ return ..gdip.bitmap(data); } } } var hbmp = ..win.clip.readBitmap() if(hbmp){ var bmp = ..gdip.bitmap(hbmp); ::DeleteObject(hbmp); return bmp; } } write = function(bmp,...){ if(!..gdip.bitmap.is(bmp)){ bmp = ..gdip.bitmap(bmp,...); } var hbmp = bmp.copyHandle(); ..win.clip.writeBitmap(hbmp,false); ::DeleteObject(hbmp); bmp.dispose(); } writePng = function(bmp,...){ if(!..gdip.bitmap.is(bmp)){ bmp = ..gdip.bitmap(bmp,...); } ..win.clip.png.write( bmp.saveToBuffer("*.png")); bmp.dispose(); } readDataUrl = function(){ var bmp = read(); if(bmp){ var url = ..inet.urlData(bmp.saveToBuffer("*.png")) bmp.dispose(); return url; } } readMarkdown = function(){ var url = readDataUrl(); if(url){ return "![image](" + url + ")"; } } /*****intellisense() win.clip.bitmap = 剪贴板图像操作函数库 end intellisense*****/ /*****intellisense(win.clip.bitmap) test() = 如果剪贴板图像有可读取的图像则返回 true; read() = 读取剪贴板图像并返回 gdip.bitmap 对象。\n可读取剪贴板中的位图、png、非远程 HTML 图像。\n!gdipbitmap. write( = 写入位图到剪贴板。 write(.(bmp) = 参数 @bmp 指定 gdip.bitmap 对象。 write(.(图像文件路径或数据) = 复制位图到剪贴板。\n如果事先导入标准库 inet.http,这里也可以直接传入图像网址。 write(.(->->) = 用一个或多个参数指定 gdip.bitmap 构造参数。\n支持的参数与 gdip.bitmap 相同,请参考 gdip.bitmap 文档。 writePng( = 写入 PNG 图像到剪贴板。 writePng(.(bmp) = 参数 @bmp 指定 gdip.bitmap 对象。 writePng(.(图像文件路径或数据) = 复制位图到剪贴板。\n如果事先导入标准库 inet.http,这里也可以直接传入图像网址。 writePng(.(->->) = 用一个或多个参数指定 gdip.bitmap 构造参数。\n支持的参数与 gdip.bitmap 相同,请参考 gdip.bitmap 文档。 readDataUrl() = 读取剪贴板图像并转换并返回为 Data URL 格式字符串。 readMarkdown() = 读取剪贴板图像并转换为 Data URL,\n然后再转换并返回为 Markdown 格式字符串 。 end intellisense*****/