Есть ли в буфере обмена GNOME MIME-тип, связанный с данными? - PullRequest
0 голосов
/ 20 декабря 2010

Я знаю, что в Linux есть несколько типов selection: primary, secondary и clipboard, первые два я рассматриваю как краткосрочный буфер обмена, а clipboard как долгосрочный буфер обмена. Я прав?

Теперь, поскольку выбор primary / secondary только для текста, я хочу скопировать изображение в буфер обмена long-term, я не знаю, связан ли с ним тип MIME. Поскольку Screen Capture может скопировать снимок экрана в буфер обмена, я думаю, что есть некоторые метаданные, которые описывают его в формате изображения. Но такие команды, как xsel, не дают никаких опций при работе с данными буфера обмена изображения. Ни копирование файла изображения в буфер обмена, ни выгрузка изображения из буфера обмена в файл не поддерживаются.

После поиска в Google я обнаружил некоторую поддержку в Python / Gtk:

import pygtk
pygtk.require('2.0')
import gtk
import os
def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    clipboard = gtk.clipboard_get()
    img = gtk.Image()
    img.set_from_file(f)
    clipboard.set_image(img.get_pixbuf())
    clipboard.store()

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

Вот вопрос, так как я думаю, что буфер обмена в GNOME может не иметь MIME-тип. У большинства приложений Gnome одинаковое соглашение по формату изображений?

И на какие документы мне следует ссылаться, если я хочу запрограммировать буфер обмена изображениями для обмена изображениями между различными приложениями, например, один хочет 8-битный индексированный битовый массив, а другой хочет 24-битный RGB битовый массив?

1 Ответ

1 голос
/ 20 декабря 2010

Копирование и вставка в Gnome выполняет согласованную передачу данных, один предоставляет список форматов, доступных для данных, а другой выбирает их предпочтительный тип. Такие API, как Gtk +, упрощают это, предоставляя только интерфейс для GdkPixbuf и управляя самой передачей формата.

Обычно вам не нужна передача необработанного растрового изображения, так как она будет довольно медленной для больших изображений, сжатие PNG хорошо, но, скажем, вставка в OO.o поддерживает только сжатие JPEG, которое обычно не требуется для объектов без фото , Это приводит к медленному вставке изображений из, скажем, Gimp в Writer.

http://library.gnome.org/devel/gtk/stable/gtk-Clipboards.html

...