लिनक्स में कमांड लाइन से क्लिपबोर्ड पर एक तस्वीर की नकल कैसे करें?


14

मैं Gimp में इमेज कॉपी कर सकता हूं और OpenOffice डॉक्यूमेंट में पेस्ट कर सकता हूं।

कमांड लाइन से इसे (कॉपी या पेस्ट इमेज) कैसे करें?


पिछले "कमांड लाइन से क्लिपबोर्ड से पेस्ट" का क्या मतलब है? शायद एक ही लेकिन केवल कॉपी के लिए: unix.stackexchange.com/questions/30093/…
Ciro Santilli Sant only only only 事件

किसी भी फ़ाइल प्रकार के लिए अधिक सामान्य प्रश्न: superuser.com/questions/796376/…
Ciro Santilli 中心 file file file file

जवाबों:


5

जैसा कि यहां पाया गया है , बाइनरी डेटा को एक फाइल के साथ पेस्ट करने की कुंजी xclipयह बताना है कि क्लिपबोर्ड पर आपके पास मीडिया प्रकार क्या हैं। पीएनजी के लिए आप कर सकते हैं:

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

या image/jpegऔर .jpgजेपीईजी के लिए।

तो अब ~/Dropbox/.mybashrcमैं अपने एक उपनाम (क्लिपबोर्ड 2 फोटो) को आसानी से इमेज फाइल में पेस्ट कर सकता हूं (हो सकता है कि किसी दिन हम इसे नौटिलस में कर लें )।


जैसा कि पहले लिंक में उल्लेख किया गया है: नोट: कुछ शोध से पता चलता है कि आपको SVN संशोधन 81 (अप्रैल 2010 से) या बाद में आवश्यक -t विकल्प रखने के लिए xclip की आवश्यकता है। या खुद पैच अप्लाई करें।
०३६__

7

मेरा मानना ​​है कि लियो अलेक्सेयेव स्क्रिप्ट कभी-कभी काम नहीं करती है (कुछ प्रणालियों पर) इस तरह के प्रश्न के उत्तर में समझाया गया है । यहाँ उद्धृत महत्वपूर्ण भाग:

एक विषमता जो अधिकांश अन्य प्रणालियों से भिन्न होती है: यदि चयन (क्लिपबोर्ड) का मालिकाना कार्यक्रम चला जाता है, तो चयन होता है।

जब मैं लियो की स्क्रिप्ट को अजगर खोल में चलाता हूं, तो यह काम कर रहा है, जब तक कि शेल चल रहा है। इसलिए मुझे लगता है कि क्लिपबोर्ड डेटा खो जाता है, जब स्क्रिप्ट समाप्त हो जाती है। जवाब में तैनात समाधान, मेरे लिए काम कर रहा है:

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

यह थोड़ा कष्टप्रद है कि इसे मैन्युअल रूप से कैसे छोड़ना है, लेकिन कम से कम यह काम करता है :)। धन्यवाद!
क्रेजी २be

1

निम्नलिखित अजगर / 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 में और न ही जिम्प में पेस्ट कर सकते हैं ("पेस्ट करने के लिए क्लिपबोर्ड में कोई छवि डेटा नहीं है")। काम मत करो। जिम्प में वास्तविक तस्वीर की नकल करने और इस स्क्रिप्ट का उपयोग करने के बाद बफर उस पाठ पर लौटता है जो इससे पहले था।
वि।

मैंने अभी-अभी कोशिश की है wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png && ./test.py Test.png, जहाँ test.py वही है जो यहाँ चिपकाया गया है। Gimp में पेस्ट ठीक है।
लियो अलेक्सेयेव

Test.png के साथ प्रयास किया। "पेस्ट करने के लिए क्लिपबोर्ड में कोई छवि डेटा नहीं है"। क्या यह गनोम चलाने पर निर्भर करता है? यह डीबग कैसे करें? मैं जिम्प में छवि को सफलतापूर्वक कॉपी कर सकता हूं और ओपनऑफिस में पेस्ट कर सकता हूं, इसलिए सामान्य नकल के कामों में।
वि।

E:
qed
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.