【问题标题】:Why does the color change when an image is copied from Edge and pasted into PowerPoint, Paint, Excel but not Word为什么从 Edge 复制图像并粘贴到 PowerPoint、Paint、Excel 而不是 Word 时颜色会改变
【发布时间】:2019-04-18 07:57:50
【问题描述】:

我们有一个使用 chart.js 来创建图表的 C# 和 JavaScript 应用程序。我们需要将该图像复制到剪贴板以粘贴到 PowerPoint 中。

由于 JavaScript 的安全限制,我们的解决方案是获取图表并使用 toBase64Image 将其转换为图像,并在 JavaScript 创建的弹出窗口中显示该图像。用户可以使用 Edge 或 IE11 右键单击​​并选择复制或复制图像(取决于浏览器),然后他们可以将其粘贴到 PowerPoint 中。

将图像粘贴到 PowerPoint、Paint 或 Excel 时会出现问题(在 Word 中可以正常工作)。背景颜色从白色变为黑色。它不是负像,因为图像的所有其他颜色都保持不变。问题是图表的某些部分一开始是黑色的,而黑色背景则丢失了。

我寻找代码来预先更改背景颜色,看看是否有帮助,但我还没有成功实现我找到的任何代码。

我需要的是能够复制图像并将其粘贴到具有白色背景的 PowerPoint 中。

【问题讨论】:

  • 某些程序存在透明度问题。如果将图像从 Word 复制到 Paint,会发生什么? JPEG 不能是透明的。
  • 乍一看,您的图像很可能是透明的,这导致在某些环境中未填充的像素为黑色。但是,需要更多信息才能确定。
  • @Terus 如果我将图像从 Word 复制到 Paint 等,那么一切正常。白色背景保持白色。
  • @Yidna 这听起来合乎逻辑。如果您知道更改透明度的解决方案,请告诉我。如果没有,那么我将开始在线搜索该解决方案。感谢您的建议。

标签: javascript internet-explorer-11 microsoft-edge


【解决方案1】:

透明背景偶尔会显示为黑色。

This chart.js GH issue 有设置背景颜色的 sn-p 代码。

Chart.plugins.register({
  beforeDraw: function(chartInstance) {
    var ctx = chartInstance.chart.ctx;
    ctx.fillStyle = "white";
    ctx.fillRect(0, 0, chartInstance.chart.width, chartInstance.chart.height);
  }
});

【讨论】:

  • 我正在研究如何实现这段代码。我没有编写使用 chart.js 的代码,并且在此任务之前我没有使用它的经验。关于整个结构,我还有很多东西要理解。
  • 太棒了!我让它工作了,它工作得很好。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多