8

Иногда я получаю специальные сообщения об ошибках от клиентов, которые мне нужно передать на наш онлайн-трекер ошибок. Хорошо работает для текста, но картинки утомительны.

Я ищу решение для копирования и вставки изображений из документов (например, листов Excel) таким образом, чтобы при вставке изображения в файл (или текстовый ввод) на HTML-странице файл автоматически записывался на диск. (tmp dir) и путь, записанный в поле ввода файла.

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

5 ответов5

3

Хорошо, ребята, это то, что я сделал.

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace ClipSave
{
    class Program
    {
        [STAThread] public static void Main()
        {
            if (Clipboard.GetDataObject() != null)
            {
                IDataObject data = Clipboard.GetDataObject();

                if (data.GetDataPresent(DataFormats.Bitmap))
                {
                    Image image = (Image)data.GetData(DataFormats.Bitmap, true);
                    string file = System.Windows.Forms.Application.CommonAppDataPath + "\\ClipSaveImage.png";
                    image.Save(file, System.Drawing.Imaging.ImageFormat.Png);
                    Clipboard.SetText(file);

                }
                else
                    MessageBox.Show("Copy valid image first");
            }
            else
                MessageBox.Show("Copy image first");
        }
    }
}

Скомпилировал его в EXE-файл, добавил ярлык меню запуска с помощью горячих клавиш Ctrl+Shift+C. Затем он копирует текущее изображение в буфер обмена в файл и помещает путь к файлу в буфер обмена.

2

Этот поток AutoHotKey имеет скрипт AutoHotKey для создания снимка экрана. Он включает в себя источник для тривиальной программы .Net 1.1 для сохранения буфера обмена в PNG. Вы хотели бы иметь несколько других модификаций:

  • Сохраните изображение в другую папку с именем лучше, чем image.png
  • Скопируйте путь к новому изображению в буфер обмена

Команды буфера обмена AutoHotKey - это еще один способ доступа к этим данным, хотя программа, получающая данные изображения, будет немного сложнее.

1

Не уверен, отвечаю ли я на ваш вопрос. но вы можете попробовать клипмен. это поможет вам скопировать все и оставить в стороне, пока вы не выберете его обратно один за другим. Клипман, источник CNET

0

Я не знаком с Windows, но так как вы попросили решения для всех операционных систем, у меня есть решение для appleScript для Mac OS X, которое я протестировал, скопировав изображение на этом веб-сайте и выполнив сценарий.

В этом яблочном сценарии предполагается, что изображение находится в буфере обмена в формате TIFF (возможно, придется проверить, является ли это тем, что выходит из Excel.) Он создает файл из буфера обмена, сохраняет его во временный каталог, а затем вставляет путь в указанное поле на самой передней странице Safari.

Таким образом, вы должны скопировать изображение, переключиться на свою страницу сафари и запустить скрипт. (Из меню сценария превратите его в сервис и назначьте ярлык или используйте FastScripts, чтобы назначить ярлык для appleScript.)

Сценарий должен быть скорректирован, чтобы найти правильное поле в вашей форме.

repeat with i in clipboard info

  if TIFF picture is in i then

    -- grab the picture from the clipboard, set up a filename based on date
    set tp to the clipboard as TIFF picture
    set dt to current date
    set dtstr to (time of dt as string) & ".tiff"
    set pt to ((path to temporary items from user domain as string) & dtstr)
    set tf to open for access file pt with write permission

    -- save the file
    try
        write tp to tf
        close access tf
    on error
        close access tf
    end try

    -- put the path into the proper field in the web Browser
    tell application "Safari"
        activate

        -- adjust javascript as necessary
        -- currently inserts into Answer textarea of this superuser.com page for testing
        -- ie. make sure you've clicked "add answer" first
        set myJS to "document.getElementById('wmd-input').value = '" & pt & "'"

        -- document 1 is frontmost
        do JavaScript myJS in document 1
    end tell

    exit repeat
  end if
end repeat

Редактировать: вещи для рассмотрения:

  • Я ничего не делаю с путем, разделитель по умолчанию - двоеточие. Вы можете хотеть путь POSIX.
  • Можно ли изменить javascript для выполнения загрузки файла javascript? (У меня нет опыта с этим, но я думаю, что это можно сделать.)
  • Excel поддерживает яблочный скрипт и имеет команду copy picture . Может быть возможно сделать это за один шаг. Выберите картинку, запустите скрипт, скопируйте скрипт, сохраните, откройте веб-страницу и заполните форму.
0
  • Щелкните правой кнопкой мыши изображение и сохраните его?
  • Перетащите изображение в папку?
  • Использовать Ножницы и сохранить их оттуда?

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

Прямая функция буфера обмена была задана ранее и не удалось.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .