mieki256's diary



2016/10/21(金) [n年前の日記]

#1 [cg_tools] StylePixを試用

StylePix なる、Windows上で動作する画像編集ソフトがあることを知ったので試用してみたり。1.14.5.0 が Stable版(安定板)だけど、2.0.0.5 beta版もあるらしい。開発した Hornil社は、公式サイトを眺めた感じでは韓国にあるソフトウェア会社っぽい。

_Hornil - StylePix - Free Photo Editor and Image Editor
_Hornil - StylePix - Download Free Lightweight and Powerful Image Editor.
_高機能で軽量な画像編集ソフト「Hornil StylePix」
_クールなデザインで高機能な画像編集フリーソフト 『StylePix』 軽量軽快でミニチュア化など面白い | PCあれこれ探索
_無料で利用できるグラフィックソフト

そこそこ機能豊富なのに、起動が比較的早くて、なんだかイイ感じ。言語設定で Japanese を選べばメニュー等も日本語化される。

しかし、メニューの日本語があちこち怪しい…。「出口」って何だ? ああ、「Exit」か…。「○○の地域」は…「region」かな。regionって日本語ではどう書くべきなのか。「作物の選択」は…作物って何だろ…。ひょっとしてGoogle翻訳そのままだったりするのだろうか。なかなかイイ感じのソフトなのに、ちと惜しい。

日本語メニューをキャプチャしてみた。 :

CGソフトの類ではメニューの各単語をどのように翻訳すべきなのか、なんだか疑問が湧いてきた。試しに、画面をキャプチャして、一つ一つ自分なりに検討してみたり。

0_0_main_menu.png

1_0_menu_file.png

2_0_menu_edit.png

3_0_menu_image.png

4_0_menu_object.png

5_0_menu_filter.png

6_0_menu_view.png

7_0_menu_window.png

8_0_menu_help.png

9_0_tooloption_brush.png

9_1_tooloption_select.png

9_2_batch_process.png

こういう感じに修正すれば、まだ伝わるだろうか…。どうなんだろ。

「整列」「配置」のあたりはどう書くべきか悩んでしまうなと。そのあたり、以前自分もソレ系のツールを作った時に項目名で悩んだ記憶が。

言語ファイルが別途存在することに気が付いた。 :

キャプチャ画像をせっせと撮ってアレコレ作業した後で気が付いたけど。Languageフォルダの中に Japanese.txt というファイルがあって、どうやらコレが言語ファイルだった模様。キャプチャ画像を作る意味は無かった…。Japanese.txt を勝手に書き換えれば済む話だった…。

テキスト形式でずらずらと記述してあるので、各自勝手に修正すれば怪しい日本語を減らせそう。エンコードは、xyzzy で開いたところ UTF-16LE BOM付き、と表示されてる。

#2 [cg_tools] PictBearやAzPainter2を試用

起動が早い画像編集ソフトを探して、 _PictBear_AzPainter2 を試用。どちらも開発終了してしまったソフトだけど、その分軽いはず。

PictBear は一瞬で起動して驚いた。しかし、選択範囲のサイズを後から調整することができない。トリミングをするのも一苦労。

AzPainter2 も圧倒的に起動が早く。かつ、選択範囲のサイズを後から調整することも可能なので、これならトリミング作業もフツーにできそうだなと。

ちょっとした作業なら、あえて昔の、動作が軽いソフトを使う、てのも全然アリだなと思えてきたり。

#3 [prog] GIMPの「着色」ってどんな処理をしてるのだろう

GIMPの、色 → 着色、ってどんな処理をしているのか気になって、GIMPのソースをDLして眺めていたり。しかし、分からん…。

以下のような処理をしてるのかなと想像するのだけど、どうなんだろう。
  1. 元画像のRGB値から輝度を算出。
  2. 着色ダイアログで指定された、色相、彩度、輝度、のうち、輝度を元画像から求めた輝度にも反映。
  3. HLS(色相、輝度、彩度)からRGBに変換。
_gimp/gimpoperationcolorize.c at master - GNOME/gimp を眺めた感じでは、そのように見えるのだけど。しかし、ググって見つけたこのソース(gimp 2.9と書いてある)と、DLしてきた GIMP 2.8.18 のソースでは、内容もファイル名も異なっていて。バージョンが違うから当たり前なんだろうけど。

RGBからグレースケールに変換。 :

RGBからグレースケールへの変換は、GIMPの場合は3種類の式があって。以下のページが分かりやすいような気がするのでメモ。

_Converting color to grayscale
_More on colors and grayscale
_明るさとコントラストの調整 < 色の調整 < 知っておきたい機能 | GIMP入門(2.8版)

もっとも、今回は輝度を求めたいのだから、0.21 * R + 0.72 * G + 0.07 * B の式でいいのだろうけど。

ただ、ググってみたら掛ける値は色々あるようで。

_osakana.factory - HSB 値と輝度の求め方 によると、0.298912 * R + 0.586611 * G + 0.114478 * B となっていた。また、 _画像のモノクロ化は輝度で変換しないとヒドイことになる - 知らなきゃ絶対損するPCマル秘ワザ では、0.299 * R + 0.587 * G + 0.114 * B となってた。掛ける値を足せば 1.0 になるのは同じだけど、それぞれ違う値だな…。

_YUV - Wikipedia によると、GIMPのソレは ITU-R BT.709 で、他は ITU-R BT.601、ということだったらしい。

_色空間の変換 (4) によると、
  • BT.709 : HDTV(ハイビジョンテレビ)の規格。Y = 0.2126 * R + 0.7152 * G + 0.0722 * B
  • BT.601 : SDTV(標準テレビ)の規格。Y = 0.299 * R + 0.587 * G + 0.114 * B
なのだとか。

_第36回:カラーマネジメント Rec.709は3種類ある? | PERCH長尾の知っ得!デザインビズ必読ポイント! | AREA JAPAN によると、BT.709 にもいくつか種類があるようで。

#4 [python] PySideでQMainWindowのレイアウト方法を再確認

PySide(PyQt)のQMainWindowは、レイアウトの仕方がちょっと違うのでメモ。

_dockwidgetlayout.py
"""
PySideでQMainWindow上にDockWidgetその他をレイアウト
動作確認環境 : Windows10 x64 + Python 2.7.11 + PySide 1.2.4
"""

import sys
from PySide.QtCore import *
from PySide.QtGui import *


class MyVWidget(QWidget):
    """ メインウインドウ周辺に配置するWidget。縦長タイプ """

    def __init__(self, parent=None):
        super(MyVWidget, self).__init__(parent)
        l = QVBoxLayout()  # 縦に並べる
        l.addWidget(QLabel("Dummy"))
        l.addWidget(QLabel("Dummy"))
        self.setLayout(l)


class MyHWidget(QWidget):
    """ メインウインドウ周辺に配置するWidget。横長タイプ """

    def __init__(self, parent=None):
        super(MyHWidget, self).__init__(parent)
        l = QHBoxLayout()  # 横に並べる
        l.addWidget(QLabel("Dummy"))
        l.addWidget(QLabel("Dummy"))
        self.setLayout(l)


class DrawAreaScene(QGraphicsScene):
    """ 描画ウインドウ用Scene """

    def __init__(self, *argv, **keywords):
        super(DrawAreaScene, self).__init__(*argv, **keywords)
        self.buttonFlag = False
        self.pixmap = QPixmap(800, 600)
        self.pixmap.fill(QColor(0, 0, 0, 0))

        # Scene に Item を追加
        self.imgItem = QGraphicsPixmapItem(self.pixmap)
        self.addItem(self.imgItem)


class DrawAreaView(QGraphicsView):
    """ メインになるQGraphicsView """

    def __init__(self, *argv, **keywords):
        super(DrawAreaView, self).__init__(*argv, **keywords)

        self.setCacheMode(QGraphicsView.CacheBackground)
        self.setRenderHints(QPainter.Antialiasing |
                            QPainter.SmoothPixmapTransform |
                            QPainter.TextAntialiasing)
        self.setBackgroundBrush(Qt.darkGray)  # 背景色を設定

        # Sceneを登録
        scene = DrawAreaScene(self)
        self.setScene(scene)
        scene.setSceneRect(QRectF(self.rect()))

    def resizeEvent(self, event):
        """ リサイズ時に呼ばれる処理 """
        super(DrawAreaView, self).resizeEvent(event)
        self.scene().setSceneRect(QRectF(self.rect()))  # Sceneの矩形も更新


class MyMainWindow(QMainWindow):
    """ メインウインドウ """

    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)

        # メニューバー
        mb = QMenuBar()
        file_menu = QMenu("&File", self)
        exit_action = file_menu.addAction("&Close")
        exit_action.setShortcut('Ctrl+Q')
        exit_action.triggered.connect(qApp.quit)
        mb.addMenu(file_menu)
        self.setMenuBar(mb)

        # ステータスバー
        status = QStatusBar(self)
        self.setStatusBar(status)
        status.showMessage("Status Bar")

        # 上のDockWidget
        self.topDock = QDockWidget("Top Dock", self)
        self.topDock.setWidget(MyHWidget(self))
        self.addDockWidget(Qt.TopDockWidgetArea, self.topDock)

        # 下
        self.bottomDock = QDockWidget("Bottom Dock", self)
        self.bottomDock.setWidget(MyHWidget(self))
        self.addDockWidget(Qt.BottomDockWidgetArea, self.bottomDock)

        # 左
        self.leftDock = QDockWidget("Left Dock", self)
        self.leftDock.setWidget(MyVWidget(self))
        self.addDockWidget(Qt.LeftDockWidgetArea, self.leftDock)

        # 右
        self.rightDock = QDockWidget("Right Dock", self)
        self.rightDock.setWidget(MyVWidget(self))
        self.addDockWidget(Qt.RightDockWidgetArea, self.rightDock)

        # 中央Widget
        self.gview_image = DrawAreaView(self)
        self.setCentralWidget(self.gview_image)


def main():
    app = QApplication(sys.argv)
    w = MyMainWindow()
    w.setWindowTitle("DockWidget Layout")
    w.resize(800, 600)
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

dockwidgetlayout_ss01.png

上下左右にドックウィジェットを配置して、真ん中にメインとなるウィジェットを配置できる、のが QMainWindow のレイアウト、なのかなと。

ドックウィジェットは、タイトルバー?部分をマウスでドラッグしてやれば、切り離して任意の場所に置くことも可能。例えば以下のような配置にもできるので、その手のツールを作成する時は便利かもしれない。

dockwidgetlayout_ss02.png

以上、1 日分です。

過去ログ表示

Prev - 2016/10 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project