Как скопировать изображение, получить путь назад при вставке в файл ввода?
Иногда я получаю специальные сообщения об ошибках от клиентов, которые мне нужно перенести на наш онлайн-трекер ошибок. Хорошо работает для текста, но картинки утомительны.
Я ищу решение для копирования и вставки изображений из документов (например, листов Excel) таким образом, чтобы при вставке изображения в файл (или текстовый ввод) на HTML-странице файл автоматически записывался на диск. (tmp dir) и путь, записанный в поле ввода файла.
Этот вопрос связан с прямой вставкой изображения буфера обмена в сообщение Gmail, но я хотел бы спросить, есть ли решение, использующее только локальную программу. Я заинтересован в решениях для всех операционных систем.
5 ответов
Хорошо, ребята, это то, что я сделал.
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. Затем он копирует текущее изображение в буфер обмена в файл и помещает путь к файлу в буфер обмена.
Этот поток AutoHotKey имеет скрипт AutoHotKey для создания снимка экрана. Он включает в себя источник для тривиальной программы.Net 1.1 для сохранения буфера обмена в PNG. Вы хотели бы иметь несколько других модификаций:
- Сохраните изображение в другую папку с именем лучше, чем
image.png
- Скопируйте путь к новому изображению в буфер обмена
Команды буфера обмена AutoHotKey - это еще один способ доступа к этим данным, хотя программа, получающая данные изображения, будет немного сложнее.
Не уверен, отвечаю ли я на ваш вопрос. но вы можете попробовать клипмен. это поможет вам скопировать все и сохранить в стороне, пока вы не выберете его обратно один за другим. Клипман, источник CNET
Я не знаком с 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 usersuper.ru 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
команда. Это может быть возможно сделать за один шаг. Выберите картинку, запустите скрипт, скопируйте скрипт, сохраните, откройте веб-страницу и заполните форму.
- Щелкните правой кнопкой мыши изображение и сохраните его?
- Перетащите изображение в папку?
- Использовать Ножницы и сохранить их оттуда?
Эти три метода позволят вам довольно быстро сохранить файл. Проводник всегда будет перемещаться в одну и ту же папку, поэтому быстрое сохранение или загрузка файла также не будет проблемой...
Прямая функция буфера обмена была задана ранее и не удалось.