วิธีการคัดลอกรูปภาพไปยังคลิปบอร์ดจากบรรทัดคำสั่งใน linux?


14

ฉันสามารถคัดลอกรูปภาพใน Gimp และวางลงในเอกสาร OpenOffice

จะทำอย่างไร (คัดลอกหรือวางภาพ) จากบรรทัดคำสั่ง?


"วางจากคลิปบอร์ดจากบรรทัดคำสั่ง" ในอดีตหมายถึงอะไร อาจเหมือนกัน แต่สำหรับการทำสำเนาเท่านั้น: unix.stackexchange.com/questions/30093/…
Ciro Santilli 新疆改造中心法轮功六四事件

คำถามทั่วไปเพิ่มเติมสำหรับประเภทไฟล์ใด ๆ : superuser.com/questions/796376/…
Ciro Santilli 新疆改造中心中心法轮功六四事件

คำตอบ:


5

ดังที่พบที่นี่กุญแจสำคัญในการวางข้อมูลไบนารีไปยังไฟล์ด้วยxclipคือการบอกประเภทสื่อที่คุณมีในคลิปบอร์ด สำหรับ PNG คุณสามารถ:

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

หรือimage/jpegและ.jpgสำหรับ JPEG

ตอนนี้ที่~/Dropbox/.mybashrcฉันเพิ่มนามแฝง (คลิปบอร์ด 2 รูปถ่าย) เพื่อวางไปยังไฟล์ภาพอย่างง่าย ๆ (บางทีสักวันหนึ่งเราจะมีไว้ใน Nautilus )


ตามที่ระบุไว้ในลิงค์แรก: หมายเหตุ: งานวิจัยบางชิ้นแสดงให้เห็นว่าคุณต้องการ xclip จาก SVN ฉบับแก้ไข 81 (ตั้งแต่เดือนเมษายน 2010) หรือใหม่กว่าเพื่อให้มีตัวเลือก -t ที่จำเป็น หรือใช้แผ่นแปะด้วยตัวเอง
i336_

7

ฉันเชื่อว่าเหตุผลที่สคริปต์ Leo Alekseyev ไม่ทำงานในบางครั้ง (ในบางระบบ) ได้อธิบายไว้ในคำตอบของคำถามที่คล้ายกันนี้ ส่วนสำคัญที่ยกมาที่นี่:

สิ่งที่แปลกประหลาดอย่างหนึ่งที่แตกต่างจากระบบอื่น ๆ ส่วนใหญ่: หากโปรแกรมที่เป็นเจ้าของสิ่งที่เลือก (คลิปบอร์ด) หายไปการเลือกจึงไม่

เมื่อฉันรันสคริปต์ของ Leo ใน python shell มันจะทำงานตราบใดที่เชลล์ยังทำงานอยู่ ดังนั้นฉันคิดว่าข้อมูลคลิปบอร์ดหายไปเมื่อสคริปต์ถูกยกเลิก โซลูชันที่โพสต์ในคำตอบนั้นใช้ได้สำหรับฉัน:

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

อัปเดตจาก _Vi: เพื่อความสมบูรณ์เพิ่มสคริปต์คลิปบอร์ด -> ไฟล์:

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

มันค่อนข้างน่ารำคาญที่จะต้องออกจากมันด้วยตนเอง แต่อย่างน้อยก็ใช้งานได้ :) ขอบคุณ!
crazy2be

1

สคริปต์ python / pygtk ต่อไปนี้ทำงาน:

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

(ที่มา: http://ubuntuforums.org/showthread.php?t=1689889 )

หากต้องการใช้สิ่งนี้ให้sudo apt-get install python pygtkวางโค้ดด้านบนลงในสคริปต์chmod +xเพื่อให้สามารถเรียกใช้งานได้และคุณควรไปได้ดี


คัดลอกรูปภาพ png เล็กน้อยโดยใช้สคริปต์นี้ ไม่สามารถวางมันเพื่อ OpenOffice หรือใน Gimp ("ไม่มีข้อมูลภาพในคลิปบอร์ดเพื่อวาง") ไม่ทำงาน หลังจากคัดลอกรูปภาพจริงใน Gimp และการใช้สคริปต์นี้บัฟเฟอร์จะเปลี่ยนเป็นข้อความที่อยู่ก่อนหน้านั้น
วิ

ฉันลอง: wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.pngที่ test.py เป็นสิ่งที่วางตรงนี้ วางลงใน Gimp
Leo Alekseyev

พยายามกับ Test.png msgstr "ไม่มีข้อมูลรูปภาพในคลิปบอร์ดที่จะวาง". มันขึ้นอยู่กับการใช้ Gnome หรือไม่? จะแก้ไขข้อบกพร่องนี้ได้อย่างไร ฉันสามารถคัดลอกรูปภาพใน Gimp และวางใน OpenOffice ได้ดังนั้นในการคัดลอกทั่วไป
วิ

E: ไม่สามารถหาแพ็คเกจ pygtk
qed
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.