[ todo ] PyQt で画像のビューアを作る version 11

2019/06/20 13:55 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
todo PyQt で画像のビューアを作る
@[TOC](項目)


- まずコンテキストメニューを作るか
結構長くなるから別ファイルにしておくか??
このソフトの機能を呼び出すときの主要な手段になるよな

- コメント表示したい
exif のコメントとして現在は書き込んでいるので、他のソフトでも見れる
これを標準で見せるようにする
Qtでは取得出来なさそうだ
pillowなどのモジュールでイケそうだけど重そう
いずれ使うことになるのなら今から使ってもいいのだが
自作かな、コメントだけなら簡単そうだけど、書き込みは後でとりあえず読むだけなら
そもそもPixmap上にテキストを描画できるんだろうか?

- マウスジェスチャ 軌跡の表示
自作ものはジェスチャとコマンドが画像中心に表示される仕様だった
ウインドウを出してたんだな
別に無くても良いんだけど・・・・

- zip内の画像を順に表示できるようにする
一覧、スプレッドシートも必要
リストビューに画像表示させれば良いのかな
自作もののソースを見るか?
- 編集機能はどうしよう
回転は欲しいような気もするが
色調補正は別ソフトじゃ無きゃだめなような・・・
8bfをpythonから使えないかな???

# pillowについて調べた

画像のexif取得
とりあえず pillow 使ってみるか??

- インスト
https://qiita.com/agajo/items/90a29627e7c9a06ec24a
もしかしたら既にあるかも

- サイズはopenしたときに取得できるらしい
from PIL import Image
image = Image.open("shutterstock_450212698.jpg")
print("width: {}, height: {}".format(image.size[0], image.size[1]))

- エフェクトはここがわかりやすいね
Qtへの変換も
https://qiita.com/pashango2/items/145d858eff3c505c100a

- タグ取得はここ
https://qiita.com/Gen6/items/88c69ab3a0666895e7a8

- pil はQt変換を標準でサポートしてるのか??
https://dungeonneko.hatenablog.com/entry/2015/07/19/142034
Qpixmapに直接読み込むのとどっちが速いか試してみよう


# 画像への文字や矩形表示について調べた

- ここがすごくわかりやすいです
Python + PyQt5 画像の上に文字や矩形を上書き(drawText, drawRect, fillRect) 
https://symfoware.blog.fc2.com/blog-entry-2299.html
Qpixmapに直接でなく、一旦Qimageに読みこんでからQpixmapに読み込むみたい
時間かからないのかな?

- しかし画像に描画したいわけではない
画像の情報を表示する場所を画像の中にしたいだけ
単純にもう一つlabelを作って画像の上にかぶせて表示できないだろうか
これが出来れば各種の基本情報表示や、マウスジェスチャの表示も可能になる

- HTMLとしてラベルに表示するやり方があるようだ
http://blog.shibu.jp/article/60706676.html

- 画像表示した後単純に

**label.setText("Good Thing GOing") **
したらどうなるかな???


----
# コンテキストメニュー
考えたら右クリックにはジェスチャを設定していたから普通にコンテキストメニューを使うと反応してしまう

```
def mouseReleaseEvent(self,e)
 if self.ges['cmd'] == '' : # ジェスチャが無い場合はコンテキストメニューを出す
   c_menu.cmenu(e)
 else :
   元のコード
========================================
<< 本体ファイル >>

from PyQt5.QtCore import  Qt 
from custommenu.py import c_menu

__init__
 c_menu(self)
 self.label.setContextMenuPolicy(Qt.CustomContextMenu)
 self.label.customContextMenuRequested.connect(c_menu.cmenu)

label か mainwindow か???

<< 別ファイルで  custommenu.py >>

from PyQt5.QtWidgets import  QAction ,QMenu 


class c_menu():

 def __init__(self,p) :
  self.parent = p

 def c_menu(self,e): # e が来るのかな??
  menu=QMenu(self.parent)

  action = QAction('Open Folder', self.parent)
  action.triggered.connect(self.parent.**** )
  menu.addAction(action)

  action = QAction('AddToList', self.parent)
  action.triggered.connect(self.parent.**** )
  menu.addAction(action)

  # menu.exec_(QCursor.pos ())   
  menu.exec_( e )   
```

----

[目次に戻る](https://mimemo.io/m/QORbW4qkvOoda0N)
      

項目pillowについて調べた画像への文字や矩形表示について調べたコンテキストメニュー

  • まずコンテキストメニューを作るか
    結構長くなるから別ファイルにしておくか??
    このソフトの機能を呼び出すときの主要な手段になるよな

  • コメント表示したい
    exif のコメントとして現在は書き込んでいるので、他のソフトでも見れる
    これを標準で見せるようにする
    Qtでは取得出来なさそうだ
    pillowなどのモジュールでイケそうだけど重そう
    いずれ使うことになるのなら今から使ってもいいのだが
    自作かな、コメントだけなら簡単そうだけど、書き込みは後でとりあえず読むだけなら
    そもそもPixmap上にテキストを描画できるんだろうか?

  • マウスジェスチャ 軌跡の表示
    自作ものはジェスチャとコマンドが画像中心に表示される仕様だった
    ウインドウを出してたんだな
    別に無くても良いんだけど・・・・

  • zip内の画像を順に表示できるようにする
    一覧、スプレッドシートも必要
    リストビューに画像表示させれば良いのかな
    自作もののソースを見るか?

  • 編集機能はどうしよう
    回転は欲しいような気もするが
    色調補正は別ソフトじゃ無きゃだめなような・・・
    8bfをpythonから使えないかな???

pillowについて調べた

画像のexif取得
とりあえず pillow 使ってみるか??

画像への文字や矩形表示について調べた

  • ここがすごくわかりやすいです
    Python + PyQt5 画像の上に文字や矩形を上書き(drawText, drawRect, fillRect)
    https://symfoware.blog.fc2.com/blog-entry-2299.html
    Qpixmapに直接でなく、一旦Qimageに読みこんでからQpixmapに読み込むみたい
    時間かからないのかな?

  • しかし画像に描画したいわけではない
    画像の情報を表示する場所を画像の中にしたいだけ
    単純にもう一つlabelを作って画像の上にかぶせて表示できないだろうか
    これが出来れば各種の基本情報表示や、マウスジェスチャの表示も可能になる

  • HTMLとしてラベルに表示するやり方があるようだ
    http://blog.shibu.jp/article/60706676.html

  • 画像表示した後単純に

**label.setText("Good Thing GOing") **
したらどうなるかな???


コンテキストメニュー

考えたら右クリックにはジェスチャを設定していたから普通にコンテキストメニューを使うと反応してしまう

def mouseReleaseEvent(self,e)
 if self.ges['cmd'] == '' : # ジェスチャが無い場合はコンテキストメニューを出す
   c_menu.cmenu(e)
 else :
   元のコード
========================================
<< 本体ファイル >>

from PyQt5.QtCore import  Qt 
from custommenu.py import c_menu

__init__
 c_menu(self)
 self.label.setContextMenuPolicy(Qt.CustomContextMenu)
 self.label.customContextMenuRequested.connect(c_menu.cmenu)

label か mainwindow か???

<< 別ファイルで  custommenu.py >>

from PyQt5.QtWidgets import  QAction ,QMenu 


class c_menu():

 def __init__(self,p) :
  self.parent = p

 def c_menu(self,e): # e が来るのかな??
  menu=QMenu(self.parent)

  action = QAction('Open Folder', self.parent)
  action.triggered.connect(self.parent.**** )
  menu.addAction(action)

  action = QAction('AddToList', self.parent)
  action.triggered.connect(self.parent.**** )
  menu.addAction(action)

  # menu.exec_(QCursor.pos ())   
  menu.exec_( e )   

目次に戻る