Конвертировать буфер обмена в GIF / PNG, если в буфере обмена содержится изображение - PullRequest
1 голос
/ 05 февраля 2010

Мне было интересно, знает ли кто-нибудь, как определить, когда изображение копируется в буфер обмена, а затем выполнить следующее, когда это произойдет:

  • Преобразовать эту картинку в GIF / PNG
  • Затем положите эту сжатую картинку в буфер обмена

Причина, по которой я спрашиваю, состоит в том, что мы часто копируем скриншоты для вставки пользователям и вставляем их в Lotus. По какой-то причине при непосредственном вставке изображения в Lotus большие объемы электронных писем, чем при вставке в Paint, сохранении в формате GIF, копировании из GIF и вставке в Lotus.

Полагаю, в буфере обмена хранятся не сами пиксели, а буквально объект, знающий формат взятых данных.

Не стесняйтесь поправлять меня, если я ошибаюсь!

EDIT:

После прочтения первого ответа у меня возникает вопрос: «Как я могу каждый раз, когда изображение находится в буфере обмена, сжимать его и помещать обратно в буфер обмена?»

Ответы [ 3 ]

1 голос
/ 05 февраля 2010

Предполагая, что это в Windows, буфер обмена сохраняет изображение в несжатом виде. GIF - это сжатый формат файла изображения, поэтому он выполняет сжатие, поэтому файлы в этом случае меньше.

0 голосов
/ 06 февраля 2010

Я использую следующую программу на C # для аналогичных целей. Сохраняет буфер обмена в файл PNG. Затем я загружаю файл в Gmail или как угодно.

class Clip2Png {
[System.STAThread]
public static void Main(string[] args) {
    if (args.Length != 1) {
        System.Console.WriteLine("Usage: clip2png filename");
        return;
    }

    System.Windows.Forms.IDataObject lData = System.Windows.Forms.Clipboard.GetDataObject();
    if (lData == null || !lData.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap)) {
        System.Console.WriteLine("No image in clipboard");
        return;
    }

    System.Drawing.Image image = (System.Drawing.Image)
            lData.GetData(System.Windows.Forms.DataFormats.Bitmap, true);
    image.Save(args[0], System.Drawing.Imaging.ImageFormat.Png);
}
}
0 голосов
/ 06 февраля 2010

Если вы ищете только решение Lotus Notes, в зависимости от того, какую версию Lotus Notes вы используете, предпочтительнее выбрать «Сжать изображения, вставленные в документы». Я думаю , что пришло в версии 8.0, но я могу ошибаться. Кроме того, я не знаю ничего, что вы могли бы использовать.

Я только что сделал тест на вставку скриншота в черновик письма, и сохраненный черновик имеет размер 124 КБ. Вставьте снимок экрана в Paint и сохраните его в формате GIF размером 163 КБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...