我需要关于将图像复制到网站中的剪贴板的帮助。图像是动态创建的。
我找到了两个解决方案
解决方案 1:
using System.Windows.Forms;
Bitmap bitmapImage ;
protected void buttonClipboard_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
MemoryStream memoryStream = new MemoryStream(imageByteArray); // Image byte array is the input
bitmapImage = (Bitmap)System.Drawing.Image.FromStream(memoryStream);
memoryStream.Flush();
memoryStream.Close();
Thread cbThread = new Thread(new ThreadStart(CopyToClipboard));
cbThread.ApartmentState = ApartmentState.STA;
cbThread.Start();
cbThread.Join();
}
[STAThread]
protected void CopyToClipboard()
{
if (bitmapImage != null)
{
//Clipboard.SetData(DataFormats.Bitmap, bitmapImage);
Clipboard.SetImage(bitmapImage);
}
}
这在发布网站之前工作正常。发布后,这在任何网站浏览器中都不起作用,因为这里使用了 STAThread。一些网站表示,由于浏览器中的内部多线程处理,线程无法在已发布的网站中工作。
解决方案 2:
<script type="text/javascript">
function CopyToClip() {
var imgControl = document.getElementById('imageContent');
imgControl.contentEditable = 'true';
var controlRange;
if (document.body.createControlRange) {
controlRange = document.body.createControlRange();
controlRange.addElement(imgControl);
controlRange.execCommand('Copy');
}
imgControl.contentEditable = 'false';
return true;
}
在发布网站之前和之后,这个 java 脚本在 IE 上运行良好。但它在任何情况下都不适用于 Chrome 和 Mozilla。
我需要一种适用于 Mozilla 和 Chrome 的解决方案。
请为此提出任何解决方案?