Help us understand the problem. What is going on with this article?

コマンドラインで画像をクリップボードにコピーしたい

PyQt5を使って画像ファイルをクリップボードにコピー

コマンドラインでテキストファイルをクリップボードにコピーしたいとき、Macでは

$ cat textfile | pbcopy

pbcopyが使えます。これと同じようなコマンドを作ろうと思って、PyQt5を利用したら簡単にできちゃいました。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QPixmap

def copy_image(imageFile):
    _ = QApplication([])
    clip = QApplication.clipboard()
    clip.setPixmap(QPixmap(imageFile))

if __name__ == "__main__":
    import sys
    from pathlib import Path
    if len(sys.argv) != 2:
        print("usage: copy_image imagefile")
    elif Path(sys.argv[1]).exists():
        copy_image(sys.argv[1])
        print(f"{sys.argv[1]} is copied")

使い方はソースを見ればわかると思います。
QApplicaitonはcopy_imageメソッド内でインスタンス作成してください。メソッドから抜けたときに自動的にデストラクタ処理されて、このときにイメージがクリップボードにコピーされます。mainでQApplicaitonのインスタンス作成をするとうまくいきません。

PyQt5を使ってクリップボードの画像をファイルに保存

今度は

$ pbpaste > textfile

的なことをやるコマンドです。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QPixmap

def paste_image(imageFile):
    _ = QApplication([])
    clip = QApplication.clipboard()
    if clip.mimeData().hasImage():
        clip.image().save(imageFile)
    else:
        print("No image in clipboard")

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        paste_image("temp.png")
    else:
        paste_image(sys.argv[1])
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away