Bagaimana cara menyalin gambar ke clipboard dari baris perintah di linux?


14

Saya dapat menyalin gambar di Gimp dan menempelkannya ke dokumen OpenOffice.

Bagaimana cara melakukannya (menyalin atau menempelkan gambar) dari baris perintah?


Apa arti dari "tempel dari clipboard dari baris perintah"? Mungkin sama tetapi hanya untuk salinan: unix.stackexchange.com/questions/30093/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:


5

Seperti yang ditemukan di sini , kunci untuk menempelkan data biner ke file xclipadalah dengan memberi tahu Jenis Media apa yang Anda miliki di clipboard. Untuk PNG Anda dapat:

xclip -selection clipboard -t image/png -o > "`date '+%Y-%m-%d_%T'`.png"

Atau image/jpegdan .jpguntuk JPEG.

Jadi sekarang saya ~/Dropbox/.mybashrcsaya menambahkan alias (clipboard2photo) untuk dengan mudah menempel ke file gambar (mungkin suatu hari nanti kita akan memilikinya di Nautilus ).


Seperti disebutkan dalam tautan pertama: CATATAN: Beberapa penelitian menunjukkan bahwa Anda memerlukan xclip dari SVN revisi 81 (dari April 2010) atau lebih baru untuk memiliki opsi -t yang diperlukan. Atau terapkan tambalan sendiri.
i336_

7

Saya percaya alasan mengapa skrip Leo Alekseyev tidak berfungsi kadang-kadang (pada beberapa sistem) dijelaskan dalam jawaban untuk pertanyaan serupa. Bagian penting yang dikutip di sini:

Satu keanehan yang berbeda dari kebanyakan sistem lain: jika program yang memiliki seleksi (clipboard) hilang, begitu pula pilihannya.

Ketika saya menjalankan skrip Leo di shell python, itu berfungsi, selama shell berjalan. Jadi saya pikir data clipboard hilang, ketika skrip dihentikan. Solusi yang diposting dalam jawaban, berfungsi untuk saya:

#!/usr/bin/env python
import gtk 
import sys

count = 0
def handle_owner_change(clipboard, event):
    global count
    print 'clipboard.owner-change(%r, %r)' % (clipboard, event)
    count += 1
    if count > 1:
       sys.exit(0)

image = gtk.gdk.pixbuf_new_from_file(sys.argv[1])
clipboard = gtk.clipboard_get()
clipboard.connect('owner-change', handle_owner_change)
clipboard.set_image(image)
clipboard.store()
gtk.main()

Perbarui dari _Vi: Untuk kelengkapan, tambahkan skrip file clipboard->:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

clipboard = gtk.clipboard_get()
img = clipboard.wait_for_image()
img.save(sys.argv[1], "png", {})

Agak menyebalkan bagaimana harus keluar secara manual, tetapi setidaknya itu bekerja :). Terima kasih!
crazy2be

1

Skrip python / pygtk berikut berfungsi:

#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os

def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    image = gtk.gdk.pixbuf_new_from_file(f)
    clipboard = gtk.clipboard_get()
    clipboard.set_image(image)
    clipboard.store()

copy_image(sys.argv[1]);

(Sumber: http://ubuntuforums.org/showthread.php?t=1689889 )

Untuk menggunakan ini, sudo apt-get install python pygtkrekatkan kode di atas ke dalam skrip, chmod +xagar dapat dieksekusi, dan Anda harus melakukannya dengan baik.


Gambar png kecil yang disalin menggunakan skrip ini. Tidak dapat menempelkannya ke OpenOffice atau ke Gimp ("Tidak ada data gambar di clipboard untuk di-paste"). Jangan bekerja Setelah menyalin gambar aktual di Gimp dan menggunakan skrip ini buffer akan kembali ke teks yang sebelumnya.
Vi.

Saya baru saja mencoba wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png:, di mana test.py adalah apa yang disisipkan di sini. Pasta halus ke dalam Gimp.
Leo Alekseyev

Mencoba dengan Test.png. "Tidak ada data gambar di clipboard untuk ditempelkan". Apakah ini tergantung pada menjalankan Gnome? Bagaimana cara debug ini? Saya dapat dengan sukses menyalin gambar di Gimp dan menempelkannya di Openoffice, jadi secara umum menyalin berfungsi.
Vi.

E: Tidak dapat menemukan paket pygtk
qed
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.