Почему цвет меняется, когда изображение копируется из Edge и вставляется в PowerPoint, Paint, Excel, но не Word

#javascript #internet-explorer-11 #microsoft-edge

#javascript #internet-explorer-11 #microsoft-edge

Вопрос:

У нас есть приложение на C # и JavaScript, которое использует chart.js чтобы создать диаграмму. У нас есть требование скопировать это изображение в буфер обмена для вставки в PowerPoint.

Из-за ограничений безопасности в JavaScript нашим решением было взять диаграмму и преобразовать ее в изображение с помощью toBase64Image и отобразить это изображение во всплывающем окне, созданном на JavaScript. Пользователь может использовать Edge или IE11, чтобы щелкнуть правой кнопкой мыши и выбрать Копировать или Копировать изображение (в зависимости от браузера), чтобы затем вставить его в PowerPoint.

Проблема возникает, когда изображение вставляется в PowerPoint, Paint или Excel (оно отлично работает в Word). Цвет фона меняется с белого на черный. Это не негативное изображение, потому что все остальные цвета изображения остаются неизменными. Проблема в том, что некоторые части графика изначально черные, а на черном фоне они теряются.

Я искал код для упреждающего изменения цвета фона, чтобы посмотреть, поможет ли это, но мне пока не удалось реализовать ни один код, который я нашел.

Что мне нужно, так это иметь возможность скопировать изображение и вставить его в PowerPoint с белым фоном.

Комментарии:

1. У некоторых программ есть проблемы с прозрачностью. Что происходит, если скопировать изображение из Word в Paint? Файлы JPEG не могут быть прозрачными.

2. На первый взгляд, вполне вероятно, что ваше изображение прозрачное, что приводит к тому, что незакрашенные пиксели в некоторых средах становятся черными. Однако для уверенности требуется дополнительная информация.

3. @Terus Если я скопирую изображение из Word в Paint и т. Д., Тогда Все работает нормально. Белый фон остается белым.

4. @Yidna Это звучит логично. Если вы знаете решение для изменения прозрачности, пожалуйста, дайте мне знать. Если нет, то я начну искать это решение в Интернете. Спасибо за предложение.

Ответ №1:

Прозрачные фоны иногда отображаются как черные.

Это chart.js В GH issue есть фрагмент кода для настройки цвета фона.

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

Комментарии:

1. Я смотрю на то, как реализовать этот код. Я не писал код, который использует chart.js и до этой задачи у меня не было никакого опыта в этом. Мне еще многое предстоит понять во всей этой структуре.

2. Потрясающе! Я заставил его работать, и он работает отлично. Большое вам спасибо.