Làm thế nào để sao chép một hình ảnh vào clipboard từ dòng lệnh trong linux?


14

Tôi có thể sao chép hình ảnh trong Gimp và dán nó vào tài liệu OpenOffice.

Làm thế nào để làm điều đó (sao chép hoặc dán hình ảnh) từ dòng lệnh?


"Dán từ clipboard từ dòng lệnh" có nghĩa là gì? Có lẽ giống nhau nhưng chỉ dành cho bản sao: unix.stackexchange.com/questions/30093/iêu
Ciro Santilli 改造

Câu hỏi chung hơn cho bất kỳ loại tệp nào: superuser.com/questions/796376/ Kẻ
Ciro Santilli 改造 心 心 事件

Câu trả lời:


5

Như được tìm thấy ở đây , chìa khóa để dán dữ liệu nhị phân vào một tệp xcliplà cho biết loại phương tiện nào bạn có trên bảng tạm. Đối với PNG bạn có thể:

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

Hoặc image/jpeg.jpgcho JPEG.

Vì vậy, bây giờ ~/Dropbox/.mybashrctôi đã thêm một bí danh (clipboard2photo) để dễ dàng dán vào tệp hình ảnh (có thể một ngày nào đó chúng ta sẽ có nó trên Nautilus ).


Như đã lưu ý trong liên kết đầu tiên: LƯU Ý: Một số nghiên cứu cho thấy rằng bạn cần xclip từ phiên bản SVN 81 (từ tháng 4 năm 2010) trở lên để có tùy chọn -t bắt buộc. Hoặc tự áp dụng các bản vá .
i336_

7

Tôi tin rằng lý do tại sao kịch bản Leo Alekseyev đôi khi không hoạt động (trên một số hệ thống) được giải thích trong câu trả lời này cho một câu hỏi tương tự. Phần quan trọng được trích dẫn ở đây:

Một điều kỳ lạ khác với hầu hết các hệ thống khác: nếu chương trình sở hữu lựa chọn (clipboard) biến mất, thì lựa chọn cũng vậy.

Khi tôi chạy tập lệnh của Leo trong shell python, nó đang hoạt động, miễn là shell đang chạy. Vì vậy, tôi nghĩ rằng dữ liệu clipboard bị mất, khi tập lệnh kết thúc. Các giải pháp được đăng trong câu trả lời, đang làm việc cho tôi:

#!/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()

Cập nhật từ _Vi: Để hoàn tất, hãy thêm tập lệnh clipboard-> tập tin:

#!/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", {})

Hơi khó chịu khi phải thoát bằng tay, nhưng ít nhất nó cũng hoạt động :). Cảm ơn!
crazy2be

1

Kịch bản python / pygtk sau đây thực hiện công việc:

#!/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]);

(Nguồn: http://ubuntuforums.org/showthread.php?t=1689889 )

Để sử dụng điều này, sudo apt-get install python pygtkhãy dán đoạn mã trên vào một tập lệnh, chmod +xđể thực thi và bạn nên sử dụng nó.


Sao chép hình ảnh png nhỏ bằng cách sử dụng kịch bản này. Không thể dán nó vào OpenOffice cũng như vào Gimp ("Không có dữ liệu hình ảnh trong clipboard để dán"). Đừng làm việc. Sau khi sao chép hình ảnh thực tế trong Gimp và sử dụng tập lệnh này, bộ đệm sẽ trở lại văn bản trước đó.
Vi.

Tôi vừa thử : wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png, trong đó test.txt chính xác là những gì được dán ở đây. Dán tốt vào Gimp.
Leo Alekseyev

Đã thử với Test.png. "Không có dữ liệu hình ảnh trong clipboard để dán". Có phụ thuộc vào việc chạy Gnome không? Làm thế nào để gỡ lỗi này? Tôi có thể sao chép thành công hình ảnh trong Gimp và dán vào Openoffice, vì vậy trong việc sao chép chung hoạt động.
Vi.

E: Không thể xác định vị trí gói pygtk
qed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.