PyQt で画像のビューアを作る 4

190621-

画像へのテキスト表示は出来たんだけどjpgのexifコメント表示で躓いて進まなかった ┐('д')┌

画像へのテキスト表示

  • 出来ました、二通り

ラベルを重ねて貼る

  • 単純に画像用のlabelの他に別のlabelを作ってそこに文字をセットでいけた
    追加のラベルは画像ラベルの子供にしても良いし親のウイジェットの子供にしてもいい
    show()で表示を切り替えれるし、何となくこっちが良い感じだと思う
  • マウスジェスチャ用にも使いたいのでこれだと簡単だよね、多分

Pixmapに描画する

  • Painterで描画出来た
    Pixmapに画像を設定するルーチンで、
paint=QPainter()
paint.begin(pixmap) # 画像用のpixmap
setText()
paint.end()

って感じで行けた
描画はQPainterを使うが、QPaintDeviceに対して行う
QPaintDeviceは、こんな感じで継承されてるので
Inherited by QGLFramebufferObject, QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, QSvgGenerator and QWidget.
QPixmapにも当然描画できる

  • 最初のラベルを追加で作る方法も、表示されるって事は描画してるってだろう
    この方法はより低レベルって事になるんだと思う
    ラベルの方が直感的で使いやすいけどね
    直接描画の方がリソース的には単純で良いのかもしれない

jpgのexifコメント表示

  • pillow できませんわ~
    pillowはインスト済みだったんで使ったが、どうしてもexifが取得できない
    imageを作ってから_getexif()だが、実行してもエラーは出ないけどNoneしか返ってこない
    _getexif()はdir(image)で見てもある、でも公式ドキュメントに記載はない
    どうなってるんだろうね
    取得できたとしても書き込みは出来ないって情報もあったので別のを探した

  • うまく読み込まないのでこれを試した
    Welcome to py3exiv2’s documentation!
    https://python3-exiv2.readthedocs.io/en/latest/index.html
    python -m pip install py3exiv2
    これビルドするやつだった
    VSが無い私の環境ではインストできなかった
    やれやれ
    win7のsp1でも.Netのバージョンが足りなくていけないんすよ
    コンパイラだけだから.Netなんて無くても良いと思うんだけど・・・・

自力でやる

  • で、自作のビューアのソースを読んでみたら簡単そうだったので実験
    コメントタグ自体はjpgの結構前に置けて、サインは2バイトしかないから探すのは簡単
    そのあとの2バイトにコメントのサイズがあってその次からすぐコメントが始まる
    バイナリで読み込んで検索していけば簡単そう
  • なんだけど、バイトの検索の方法がわからず中断中
    cだと型なんて簡単にキャストできるけど、pythonみたいな高級言語だとそう簡単でも無いっすよね
    実は簡単なのかな?
    やるからには書き込みも出来るようにしてやらなきゃな

190624

pillow 使ってみた

  • 別のスクリプトにした、今後もそうなるだろう
    起動が不安定
    pillowは既にあったけど最新版をインストし直し、でも今ひとつだ

  • 明るさ、回転は試せた
    img.hoge(,,)
    って使い方が基本だが、img自体は維持されていて変換後のコピーが戻るんだね
    それがわからずずっとimgを表示してたので何も変わらず焦った

  • それぞれの変換毎にスライダーの設定も変える必要あり
    designerでやってしまうか、スクリプトの中でやるかは設計上の問題ですな
    スクリプト内でやった方が可読性が高いし変更しやすいかな?

  • やりたいのはブレンド
    はやく試したい・・・・
    適当にマスク画像を作ってはめてみるか??

戻る

END

Close