mieki256's diary



2024/04/07() [n年前の日記]

#1 [linux] Linuxのファイラーのアイコンテーマを変更したい

Ubuntu Linux 22.04 LTS (i3-6100T機)に、Windows10 x64 22H2 + MobaXterm からアクセスして、nemo や caja のようなGUIファイラーを起動する時があるのだけど。表示されているアイコンの見た目がどうも気に入らない。おそらくは Yaruテーマが選ばれているのだろうけど、個人的に好みの見た目ではない…。

アイコンテーマを変更したいのだけど、どうやって変更したらいいのだろう。

Ubuntu のデスクトップ画面(Xfce)上なら、設定で「外観」を選んでアイコンテーマを変更すればいいのだけど。MobaXterm から起動した際は別の設定が使われるようで、Xfce側で行った変更が反映されなくて…。

何か方法はあるはずとググっているけど、解決策を紹介してるページには遭遇せず。うーん。

2024/04/08追記 :

~/config/gtk-3.0/settings.ini を修正すれば対応できそう。

#2 [anime] 「ブラック・ジャック 劇場版」を視聴

BS12で放送されていたので視聴。出崎統監督作品。OVA版の流れで作られたアニメらしい。

今はもう見られない映像スタイルなので、その点は興味深く見ることができた。こういうスタイルを今のアニメも部分的に取り込めないものかなあ…。いや、作品によってはデジタル撮影処理で結構再現してる感もあるけれど。今時は、どんなアニメもうっすらとグラデかけてたりするもんな…。

おそらくだけど、漫画から劇画に変わっていく時期を意識させられた世代の作り手達だろうから、このアニメも、漫画的なアニメから劇画的なアニメへの移行を意識しつつ作っていたのではと想像したりもする。そういえば、そもそも原作のBJも、劇画がブームになって、もう漫画は古い、手塚は古いと言われていた時期の作品だったか…。原作が目指してたはずの劇画的な印象を、OVA版も含めてこのシリーズで醸し出せないか挑戦していたのではないかなあ、と。

そのように想像すると、もしかすると今の世代にも応用できるところがありそうな…。なんでもかんでも「漫画原作アニメ」と呼んでしまって大雑把過ぎる分類をしたりせずに、あえて意識して「劇画原作アニメ」と口にしながら作業してみたら最終的な映像の印象も変わってきて他作品との差別化ができたりしないだろうか…。漫画ではなく劇画のように感じるアニメの映像スタイルとは一体どういうものなのか、ちょっと想像してみるのもアリだったりして…? 「呼び方を変えたぐらいでイメージが変わるわけないだろ」と笑われるかもしれないけれど、例えば「少年漫画原作アニメ」と「少女漫画原作アニメ」では思い浮かぶイメージも違ってくるものだし。

それはともかく。BJで90分前後の話を見せるのはなんだかちょっと違うなとも思えた。原作が基本的に1話完結モノだったし、アイデアをポンと出してさっと終わるのがBJっぽいかもなあ、と…。もしかすると、30分で1話、それを3本並べて、みたいな感じでまとめたほうがBJシリーズらしくなったのでは…。でも、劇場版となったら、それなりの尺で作りたいと皆思ってしまうものなのかな…。見る側もそういうフォーマットを期待してそうだし…。

2023/04/07(金) [n年前の日記]

#1 [linux] rangerで画像プレビューができない

Raspberry Pi Zero W + Raspberry Pi OS buster 上で ranger を使おうとしたのだけど、画像プレビューができないことに気づいた。w3m, w3m-img はインストールしてあるはずなのだけど…。

ranger で .png ファイルにカーソルを合わせると、以下のメッセージが表示されてしまう。
('Failed to execute w3mimgdisplay',[])

Raspberry Pi OS buster の場合、w3mimgdisplay は /usr/lib/w3m/ の中にあるので、~/.bashrc で以下の指定も追加したのだけど、効果は無い模様…。
export PATH=$PATH:/usr/lib/w3m
export W3MIMGDISPLAY_PATH=/usr/lib/w3m/w3mimgdisplay

which w3mimgdisplay と打つと、以下が表示される。パスは通っているようだが…。
$ which w3mimgdisplay
/usr/lib/w3m/w3mimgdisplay

w3mimgdisplay 単体で動作するのか確認したいと思ったものの、w3mimgdisplay hoge.png といった感じで打っても何の反応も返ってこない。どうやらフツーのツールのような指定をして動かすプログラムでは無さそうだなと…。

解決策は今のところ不明。とりあえず、Raspberry Pi + ranger で画像プレビューは諦めよう…。他の環境なら問題無く動いてるし…。

#2 [tv][comic] 「浦沢直樹の漫勉neo (18)島本和彦」を視聴

NHKで放送されている「漫勉」の島本和彦先生の回を録画していたので視聴。「漫勉」は、漫画家さんの仕事場にカメラを設置して、作業の様子を紹介していく番組。

面白かった…。何より、島本和彦先生が面白い…。仕事場に到着早々、「NHK! どうだ!? 準備はできているか!?」とカメラを指差しながら叫ぶ漫画家さんはシリーズ初なのではなかろうか。

擬音等は日本字ペン、キャラはGペンの使い分けが興味深かった。浦沢先生も日本字ペンを使ってると発言していたけど、結構日本字ペンを使う漫画家さんは多いのだな…。いやまあ、今の若い漫画家さんはデジタルで描くからアレだろうけど。もっとも、デジタルの場合も、パラメータを調整して描き味を自分好みに調整していくわけで、カスタマイズ可能な部分の多さと言う点ではデジタルのほうが際限が無いのかもしれない。

#3 [anime] 「劇場版『SHIROBAKO』」を視聴

期間限定で、「劇場版『SHIROBAKO』」がYouTube上で無料配信されてると知ったので視聴。アニメ制作スタジオを舞台にしたTVアニメ「SHIROBAKO」の劇場版、ということらしい。

ネット上ではあまり評判が良くなかったらしいので少し不安だったけど、見てみたらフツーに面白かった。もっとも、TVアニメ版を未視聴の人がいきなりこれだけ見ても、登場人物がどんなキャラなのかさっぱり分らないだろうし、そう考えると完全にファン向けの作りだった気もする。とは言え、ファン向けだとしたらコレはどうなのと思ってしまう部分もたしかにあって…。

話を盛り上げるために、 悪意を持った人間を登場させたあたりは、もうちょっとどうにかできなかったかなあ、という気もする。皆がちゃんと頑張ってるけどそれでもトラブルが起きる時はやっぱり起きちゃうもんで、みたいな展開なら印象が違ったのだろうけど…。もっとも、だったら何かアイデア出してみてよと言われたら頭を抱えてしまいそう。キャラを動かして問題を起こすのが一番確実ではあるんだろうな…。

TVアニメ版後半でも「変な話」のキャラが登場したあたりで不評になった印象があるのだけど、 戦犯が制裁を全く受けないあたりもスッキリしないよなと…。いやまあ、それが現実だろう、リアルだろうと言われたら、それはまあそうかもしれませんが、と返すしかないけれど。つまるところ、制作した P.A.WORKS のプロデューサーがどこかで発言していたように、リアルとファンタジーの比率をどの程度にするか、みたいな話に繋がっていくのだろうか。

そういった、ちょっと気になる部分はありつつも、全然フツーに楽しめるアニメシリーズになってるのだから、たいしたもんだなと。例えばコレがもし、押井守監督あたりがアニメ業界を舞台にした何かを作ったとしたら、殺人事件が起きたり、監督が逃亡したりと、「そんなの客に見せてどうすんの…」とゲンナリするモノが平気で出てくるわけで。アニメ業界人がアニメ業界を舞台にすると必ずダークなものが出てくる…。そういったアレコレと比べたら、このシリーズはバランス感覚があるほうだよなと…。

2022/04/07(木) [n年前の日記]

#1 [python] tkinterのキャンバスで画像を拡大縮小させるスクリプトの動作確認中

_昨日作成した Python + tkinter + Pillow を使って画像表示するスクリプトを、Ubuntu Linux 20.04 LTS (64bit)上でも動かしてみた。

メモリエラーの問題。 :

Windows10 x64 21H2 + Python 2.7.18 32bit 上では、1024 x 1024の画像を8倍(8192 x 8192)まで拡大表示した際にメモリエラーが発生していたのだけど。

Ubuntu Linux 20.04 LTS上なら、Python 2.7.18 64bit、Python 3.8.10 64bit、どちらも8倍まで拡大表示できた。

つまり、この問題は、Python や Pillow のバージョンが原因では無く、32bit版か否かに起因する、ということになるのだろう…。

Pillowのアルゴリズム指定が変更された。 :

Ubuntu Linux 20.04 LTS + Python 3.8.10 + Pillow 9.1.0 で動かした際、拡大縮小アルゴリズムの種類を示す Image.LANCZOS や Image.NEAREST という指定に対して警告が表示された。

$ python3 04_canvas_zoom4.py
04_canvas_zoom4.py:173: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.
  self.im_pad = self.im.resize((w, h), Image.LANCZOS)

04_canvas_zoom4.py:194: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.
  self.im_pad = ImageOps.pad(self.im, (cw - 4, ch - 4), method=Image.LANCZOS)

04_canvas_zoom4.py:179: DeprecationWarning: NEAREST is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.NEAREST or Dither.NONE instead.
  self.im_pad = self.im.resize((w, h), Image.NEAREST)

Image.LANCZOS や Image.NEAREST は Pillow 10.x で削除される予定らしい…。Image.Resampleing.LANCZOS や Image.Resampling.NEAREST と記述せよとのこと。

しかし、新しい記述の仕方をしたら、例えば Python 2.7.x + Pillow 6.x.x で動かないスクリプトになりそうな気がする…。まあ、以下のような書き方をすれば動きそう。たぶん。

            try:
                mkind = Image.Resampling.LANCZOS
            except Exception:
                mkind = Image.LANCZOS
            self.im_pad = self.im.resize((w, h), mkind)

修正版のスクリプト。 :

そんなわけで、スクリプトを少し修正。Windows10 x64 21H2 上でも、Ubuntu Linux 20.04 LTS 上でも、どちらでも動いてくれた。

_04_canvas_zoom4.py


使用画像は以下。

_tex_1024.png

zoom や subsample というメソッドもあった。 :

tkinter の PhotoImage についてググってたら、zoom や subsample という、拡大や縮小に使えるメソッドがあると知った。
  • PhotoImage.zoom(n) : 整数倍(n倍)で拡大する。
  • PhotoImage.subsample(n) : 整数分の一(1/n)で縮小する。

整数を指定することしかできないので、細かいリサイズはできないけれど、これらのメソッドを使えば、Pillow を使って画像をリサイズするのと比べて、メモリエラーが出にくいのではと思えてきた。Pillow の ImageTk.PhotoImage() に、リサイズ後の巨大な Image を渡してしまうとメモリエラーが発生するわけだけど、PhotoImage.zoom() を使って拡大処理をすれば、Pillow の ImageTk.PhotoImage() は元々の画像サイズで変換することになるので、メモリエラーを回避できるのでは、と…。

ということで、試してみた。

_01_photoimage_zoom.py
try:
    import Tkinter as tk
except Exception:
    import tkinter as tk

from PIL import Image, ImageTk


class App(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)

        self.frm = tk.Frame(self.master)
        self.frm.pack(expand=1, fill=tk.BOTH)
        self.frm.rowconfigure(1, weight=1)
        self.frm.columnconfigure(2, weight=1)

        self.btn0 = tk.Button(self.frm, text="-", command=lambda: self.dec_ratio())
        self.btn1 = tk.Button(self.frm, text="+", command=lambda: self.inc_ratio())
        self.zoomstr = tk.StringVar()
        self.zoomlbl = tk.Label(self.frm, textvariable=self.zoomstr)
        self.btn0.grid(row=0, column=0, ipadx=4)
        self.btn1.grid(row=0, column=1, ipadx=4)
        self.zoomlbl.grid(row=0, column=2)

        self.canvas = tk.Canvas(self.frm, bg="#666666")
        self.canvas.grid(row=1, column=0, columnspan=3, sticky=tk.N + tk.S + tk.W + tk.E)

        self.im = Image.open("tex_1024.png")
        self.photo_image = ImageTk.PhotoImage(image=self.im)

        self.ratio = 1
        self.set_image()

    def set_image(self):
        self.canvas.delete("all")
        if self.ratio == 1:
            # 1:1
            self.zoomstr.set("%d%%" % (self.ratio * 100))
            self.zoom_image = self.photo_image
        elif self.ratio > 1:
            # zoom (x 2, 3, 4, ...)
            zm = int(self.ratio)
            self.zoomstr.set("%d%%" % (self.ratio * 100))
            self.zoom_image = self.photo_image._PhotoImage__photo.zoom(zm)
        else:
            # subsample (/ 2, 3, 4, ...)
            zm = -self.ratio
            r = int(100 / zm)
            self.zoomstr.set("%d%%" % r)
            self.zoom_image = self.photo_image._PhotoImage__photo.subsample(zm)

        self.canvas.create_image(0, 0, image=self.zoom_image, anchor=tk.NW)

    def inc_ratio(self):
        maxratio = 16
        if self.ratio < maxratio:
            self.ratio = self.ratio + 1
            self.ratio = min([maxratio, self.ratio])
            if -1 <= self.ratio <= 1:
                self.ratio = 1
            self.set_image()

    def dec_ratio(self):
        minratio = -10
        if self.ratio > minratio:
            self.ratio = self.ratio - 1
            self.ratio = max([minratio, self.ratio])
            if -1 <= self.ratio <= 0:
                self.ratio = -2
            self.set_image()


def main():
    root = tk.Tk()
    app = App(master=root)
    app.mainloop()


if __name__ == '__main__':
    main()

使用画像は以下。

_tex_1024.png

動作確認環境は以下。
  • Windows10 x64 21H2 + Python 3.9.12 64bit + Pillow 9.1.0
  • Windows10 x64 21H2 + Python 2.7.18 32bit + Pillow 6.2.2

py 01_photoimage_zoom.py で実行。以下のような感じで動作した。




Python 2.7.18 32bit + Pillow 6.2.2 で処理をした場合、1024 x 1024 の画像を8倍(8192 x 8192)まで拡大させるとメモリエラーが発生してしまうけれど。.zoom() を使うと、Python 2.7.18 32bit上で9倍(9216 x 9216)まで拡大してもメモリエラーは出なかった。

しかし、どこまでも拡大できるわけでもないようで…。11倍(11264 x 11264)まで拡大しようとしたらメモリエラーが発生した。

> py -2 01_photoimage_zoom.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\Python27\lib\lib-tk\Tkinter.py", line 1547, in __call__
    return self.func(*args)
  File "01_photoimage_zoom.py", line 32, in <lambda>
    self.btn1 = tk.Button(self.frm, text="+", command=lambda: self.inc_ratio())
  File "01_photoimage_zoom.py", line 75, in inc_ratio
    self.set_image()
  File "01_photoimage_zoom.py", line 58, in set_image
    self.zoom_image = self.photo_image._PhotoImage__photo.zoom(zm)
  File "C:\Python\Python27\lib\lib-tk\Tkinter.py", line 3400, in zoom
    self.tk.call(destImage, 'copy', self.name, '-zoom',x,y)
TclError: not enough free memory for image buffer

また、10倍(10240 x 10240)まで拡大してから、9倍に戻そうとしたら、そのタイミングでもメモリエラーが発生した。

ということで、.zoom() を使えば、Python 32bit版上でも、Pillow でリサイズ処理をする場合と比べて、もうちょっと大きく拡大表示ができることが分かった。ただ、拡大率を上げていくと、そのうちどこかでメモリエラーが発生するし、拡大すると処理時間が目に見えて遅くなるあたりはどちらも同じなので、五十歩百歩な感も否めない…。

余談。Pillow の ImageTk.PhotoImage() を使って得られた PhotoImage に対して、.zoom() や .subsample() を使いたい場合は、hoge._PhotoImage__photo.zoom(n) といった具合に記述するらしい。「._PhotoImage__photo.」を挿入することで、.zoom() 等が呼べるようになる模様。

_python - PhotoImage zoom - Stack Overflow
_Tkinter Photoimage | Delft Stack

#2 [python][wxpython] wxPython 3.0と4.0の違いを少し調べた

昔、wxPython 3.0.2.0 用に書いていたスクリプトが、wxPython 4.1.0 で動かないことに気が付いたので、どこらへんの仕様が変わったのか、ほんの少しだけ調べてみた。

ある程度は、以下のページで記述されてる気配はあるけれど…。

_wxPython Changelog | wxPython

確認した環境は以下。
気づいたところをいくつかメモ。


wx.EVT_PAINT(self, self.OnPaint) や wx.EVT_SIZE(self, self.OnSize) という書き方は非推奨。.Bind() を使って指定する。
wx.EVT_PAINT(self, self.OnPaint)
wx.EVT_SIZE(self, self.OnSize)
↓
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)

wx.Menu の .Append() 内で text="..." という書き方はできなくなった。
item = file_menu.Append(wx.ID_EXIT, text="&Exit")
↓
item = file_menu.Append(wx.ID_EXIT, "&Exit")

他にもまだまだ変更点があるはずだけど…。

2022/04/08追記。 :

以前も少し調べてメモしていたことをすっかり忘れてた…。

_mieki256's diary - wxPython 4.1.1 を少し触ってる

修正したスクリプト。 :

上記の変更を反映させて、以前書いたスクリプトを修正してみた。画像をウインドウ内にドラッグアンドドロップ(DnD)すると画像を表示して、その画像をドラッグすると位置を移動できるスクリプト。

_drag_image.py
import wx

USE_BUFFERED_DC = True


class MyObj():

    """マウスドラッグで移動できるオブジェクト用クラス"""

    def __init__(self, bmp, x=0, y=0):
        """初期化"""
        self.bmp = bmp  # bitmapを記録
        self.pos = wx.Point(x, y)  # 表示位置を記録
        self.diff_pos = wx.Point(0, 0)

    def HitTest(self, pnt):
        """座標とアタリ判定"""
        rect = self.GetRect()  # 矩形領域を取得
        
        # 座標が矩形内に入ってるか調べる
        try:
            r = rect.InsideXY(pnt.x, pnt.y)
        except:
            r = rect.Contains(pnt.x, pnt.y)
        return r
        

    def GetRect(self):
        """矩形領域を返す"""
        return wx.Rect(self.pos.x, self.pos.y,
                       self.bmp.GetWidth(), self.bmp.GetHeight())

    def SavePosDiff(self, pnt):
        """
        マウス座標と自分の座標の相対値を記録。
        この情報がないと、画像をドラッグした時の表示位置がしっくりこない
        """
        self.diff_pos.x = self.pos.x - pnt.x
        self.diff_pos.y = self.pos.y - pnt.y

    def Draw(self, dc, select_enable):
        """与えられたDCを使って画像を描画"""
        try:
            have_bitmap = self.bmp.Ok()
        except:
            have_bitmap = self.bmp.IsOk()

        if not have_bitmap:
            return False
        
        r = self.GetRect()  # 矩形領域を取得

        # ペンを設定しないと何故か描画できない
        dc.SetPen(wx.Pen(wx.BLACK, 4))
        dc.DrawBitmap(self.bmp, r.x, r.y, True)  # 画像を描画

        if select_enable:
            # 画像枠を描画
            dc.SetBrush(wx.TRANSPARENT_BRUSH)  # 透明塗り潰し
            dc.SetPen(wx.Pen(wx.RED, 1))  # 赤い線を指定
            dc.DrawRectangle(r.x, r.y, r.width, r.height)  # 矩形を描画

        return True


class MyFileDropTarget(wx.FileDropTarget):
    """ドラッグアンドドロップ担当クラス"""

    def __init__(self, obj):
        """初期化"""
        wx.FileDropTarget.__init__(self)
        self.obj = obj  # ファイルのドロップ対象を覚えておく

    def OnDropFiles(self, x, y, filenames):
        """ファイルドロップ時"""
        self.obj.LoadImage(filenames)  # 親?の画像読み込みメソッドを呼ぶ
        return True


class MyFrame(wx.Frame):
    """ダブルバッファで表示するFrame"""

    def __init__(self, parent=None, title=""):
        """初期化"""
        wx.Frame.__init__(self, parent=parent, title=title, size=(800, 600))

        # PAINTイベント、SIZEイベントで呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Bind(wx.EVT_SIZE, self.OnSize)

        # マウスボタンを押した時に呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown)
        self.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp)

        # マウスカーソルを動かした時に呼ばれるメソッドを割り当てる
        self.Bind(wx.EVT_MOTION, self.OnMouseMotion)

        # 画像格納用リストを初期化
        self.objs = []

        # マウスドラッグ処理用の変数を確保
        self.drag_obj = None
        self.drag_start_pos = wx.Point(0, 0)

        # 描画用バッファ初期化のために一度 OnSize() を呼ぶ
        self.OnSize()

        # ファイルドロップの対象をフレーム全体に
        self.droptarget = MyFileDropTarget(self)

        # ファイルドロップ受け入れを設定
        self.SetDropTarget(self.droptarget)

    def LoadImage(self, files):
        """D&Dされた画像をロードして描画"""
        x, y = 0, 0
        for filepath in files:
            b = wx.Bitmap(filepath)
            obj = MyObj(b, x, y)
            self.objs.append(obj)
            x += 32
            y += 32

        self.UpdateDrawing()  # 描画更新

    def OnSize(self, event=None):
        """ウインドウサイズが変更された時に呼ばれる処理"""
        size = self.ClientSize  # クライアントのウインドウサイズを取得

        # ウインドウサイズで、空の描画用バッファ(bitmap)を作成
        self._buffer = wx.Bitmap(*size)

        self.UpdateDrawing()  # 描画更新

    def UpdateDrawing(self):
        """描画更新"""
        dc = wx.MemoryDC()
        dc.SelectObject(self._buffer)

        self.Draw(dc)  # 実際の描画処理
        del dc  # Update()が呼ばれる前に MemoryDC を削除しておく必要がある

        # Falseを指定して背景を消さなくしたら画面のちらつきが出なくなった
        self.Refresh(eraseBackground=False)

        self.Update()

    def Draw(self, dc):
        """実際の描画処理"""
        dc.Clear()  # デバイスコンテキストでクリア
        for obj in self.objs:
            obj.Draw(dc, True)  # オブジェクトを描画

    def OnPaint(self, event=None):
        """画面書き換え要求があった時に呼ばれる処理"""
        if USE_BUFFERED_DC:
            # ダブルバッファを使う場合
            dc = wx.BufferedPaintDC(self, self._buffer)
        else:
            # ダブルバッファを使わない場合
            dc = wx.PaintDC(self)
            dc.DrawBitmap(self._buffer, 0, 0, True)

    def FindObj(self, pnt):
        """マウス座標と重なってるオブジェクトを返す"""
        result = None
        for obj in self.objs:
            if obj.HitTest(pnt):
                result = obj
        return result

    def OnMouseLeftDown(self, event):
        """マウスの左ボタンが押された時の処理"""
        pos = event.GetPosition()  # マウス座標を取得
        obj = self.FindObj(pos)  # マウス座標と重なってるオブジェクトを取得
        if obj is not None:
            self.drag_obj = obj  # ドラッグ移動するオブジェクトを記憶
            self.drag_start_pos = pos  # ドラッグ開始時のマウス座標を記録
            self.drag_obj.SavePosDiff(pos)

    def OnMouseLeftUp(self, event):
        """マウスの左ボタンが離された時の処理"""
        if self.drag_obj is not None:
            pos = event.GetPosition()
            self.drag_obj.pos.x = pos.x + self.drag_obj.diff_pos.x
            self.drag_obj.pos.y = pos.y + self.drag_obj.diff_pos.y

        self.drag_obj = None
        self.UpdateDrawing()

    def OnMouseMotion(self, event):
        """マウスカーソルが動いた時の処理"""
        if self.drag_obj is None:
            # ドラッグしてるオブジェクトが無いなら処理しない
            return

        # ドラッグしてるオブジェクトの座標値をマウス座標で更新
        pos = event.GetPosition()
        self.drag_obj.pos.x = pos.x + self.drag_obj.diff_pos.x
        self.drag_obj.pos.y = pos.y + self.drag_obj.diff_pos.y
        self.UpdateDrawing()  # 描画更新

def main():
    app = wx.App(False)
    frame = MyFrame(None, "DnD Image display use Double Buffer")
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()


py drag_image.py で実行。以下のような感じになった。


2021/04/07(水) [n年前の日記]

#1 [nitijyou] 歯医者に行ってきた

電動自転車でS歯科まで。PM02:00-PM02:31まで治療。土台をつけた。

帰りにカワチまで寄って夜食等を購入。

2020/04/07(火) [n年前の日記]

#1 [pc] メインPCのBD-Rドライブを再度取り付けてみた

メインPCのM/Bを GIGABYTE B450M S2H rev.1.0 に交換したらシャットダウンができなくなって ―― シャットダウン直後に勝手に再起動してしまう症状が出てしまって、BD-RドライブとUSB3.0増設ボードを外したらシャットダウンできるようになった件。

BD-Rドライブが使えなくなるのは痛いので、試しにBD-Rドライブを再度接続して動作確認をしてみた。ドライブの型番は、BUFFALO BR-616FBS-BK (LG GGW-H20N)。

_BD-R/RE対応 SATA用 内蔵ブルーレイドライブ | BR-616FBS-BK

結果は…。BD-Rドライブを接続しただけなら、ちゃんとシャットダウンできた。

つまり、GIGABYTE製M/B or SocketAM4 M/B or B450チップセット搭載M/Bに、USB3.0増設ボード AREA SD-PEU3R-4E (4WING2) (Renesas uPD720201搭載)をつけると、シャットダウン直後に勝手に再起動する不具合が発生する、ということが分かってきた。

似たような報告事例を見かけた。 :

ググってみたところ、玄人志向のフォーラムでも、USB3.0増設ボードを取り付けると同じ症状が発生する、という報告事例を見かけた。

_トピック: USBインターフェースボード増設にて、シャットダウンで再起動される | 玄人志向フォーラム

Intel H61チップセット搭載M/Bの話だけど、しかし、GIGABYTE製M/Bという点は同じ…。

不具合を起こしてる製品は、玄人志向 USB3.0-PCIE-P2。

_玄人志向 | USB3.0-PCIE-P2:Renesas社製 uPD720202搭載 USB3.0 インターフェース(PCI-Express x1)

Renesas uPD720202 搭載品なのか…。どうも Renesas uPD72020x がひょっとしてアレなのでは、と思えてきたりもして。

#2 [pc] BD-Rドライブのファームウェアを更新してみた

メインPCにBD-Rドライブを接続し直したことだし、せっかくだからBD-Rドライブのファームウェアを更新してみようかと。型番は、BUFFALO BR-616FBS-BK。LG GGW-H20N のOEM。

BUFFALOのサイトで公開されているファームウェアは、XJ04 が最後の版だったらしい。

_BR-616FBS-BK : ソフトウェア | バッファロー

ただ、ググってみると、LG GGW-H20N の最後のファームウェアは、XL07 らしくて。GGW-H20N_XL07(EW).zip というファイルが必要らしい。ググってみて、それらしいファイルを入手。

_LG GGW-H20N.ALOK01: Support, Manuals, Warranty & More | LG USA Support

ただ、このファームウェアは、OEM品には適用できないらしい。実行しても「対象ドライブが見つからねえよ」と言われてしまう。また、ファームウェアと同梱されてる readme.txt にも、「OEM先がファームウェアを公開してくれるはずだからそっちを使ってね」的なことが書いてあった。しかし、BUFFALO が出してくれてないわけで…。

一応裏技があるらしい。

_容量不足問題解決への一歩 07年12月製造のGGW-H20N動いた:僕の記憶 - ブロマガ

PCの電源投入前からBDドライブの取り出しボタンを押し続けてPCの電源を投入。ブート画面(?)が出てきたら取り出しボタンから指を離す。Windowsが起動したらLG版ファームウェア更新ツールを実行。現在バージョンが「COR4」になって、更新できるようになる、のだとか。

しかし、試してみたら、すんなりいかない…。Windows10 x64 1909 上で実行したせいなのか、ファームウェアの転送が行われているっぽい感じで、BDドライブの青いLEDが激しく点滅するけど、そのうちLEDが消灯して無反応になる…。ツール上ではアニメがずっと動いたまま、10分経っても変化無し。

仕方なく再起動しようとしても、HDD LEDが点灯しっぱなしで再起動できない。リセットスイッチを押してみたけど、BDドライブのLEDが消灯したまま。電源ボタンを長押しして無理矢理電源を切ってから、電源投入。今度はBDドライブのLEDが光った。

Windows10起動後、件のファームウェア更新ツールを実行してみたら、現バージョンが XL07 になっている、と表示された。BUFFALO版のツールは、対象ドライブ無し、と表示されてる。

一応、HHDレコーダで焼いたBD-Rを再生できることは確認できた。でも、これでファームウェア更新はできているのだろうか…。そのうち不具合が出てくるかもしれない…。

#3 [pc] ポータブルBD-Rドライブについて調べた

現在店頭で販売されてるUSB接続ポータブルBDドライブについて調べていたのだけど。どれを選ぶべきかちょっと面倒臭い気配が…。

まず、どのメーカの、どの製品も、「USBケーブルを繋ぐだけで使えるよ!」と謳ってるのだけど。これがちょっと…。半分は本当だけど、半分は嘘で…。

と言うのも、光学メディアを読み込むだけなら、USB接続時の電流だけでも動く場合が多い = USBケーブルを繋ぐだけで使えると言えなくも無いのだけど。しかし、光学メディアに書き込みをしようとすると、えてして電流が足りなくて、ACアダプタ(5V,1.5A〜2.0A)等の外部電源が必要になる場合がほとんど、ということらしく…。あちこち眺めた感じでは、このあたり、ポータブル光学ドライブを使う人達の間では常識レベルの話、らしい…。

一応、メーカサイトにも、「電力不足の時は別売りのACアダプタが必要」等が書いてあるのだけど、これがもう、豆粒のような小さい文字で…。しかも、フォントの色が薄いグレーで…。お前ら騙す気満々やんけ。読ませる気ないやんけ。酷過ぎる。

考えてみたら、USB規格の電流如きで間に合うわけがないのだよな…。

例えば、自分がメインPCに内蔵してるBD-Rドライブ BUFFALO BR-616FBS-BK (LG GGW-H20N)は ―― これは比較的電気を食う製品らしいけど、5V/12V:1.9A/3.0A が必要と書いてある。

そして、USB規格では、USB2.0が 5V,500mA(0.5A)、USB3.0が 5V,900mA(0.9A) を流せる、と決まっているので…。もう全然足りない。ドライブにUSBケーブルを2本つけて、片方のケーブルは電力供給専用です! と言ってみたところで、やっぱり足りない。

「だったら最初からACアダプタもセットにして売ればいいじゃん。なんで別売り?」と思わないでもないのだけど。しかし、今の御時世、光学ドライブが使われる場面を想像すると…。メディアをガンガン焼く人も一応居るだろうけど、大半の人はおそらくメディアの読み込みしかしないのではないか。となるとACアダプタなんて邪魔なだけ。つまりACアダプタが別売りなのは、ある面では良心的、とも言えてしまう。

でも、ガンガン焼くつもりでそれらのドライブを買った人が、宣伝ページの通りに、USBケーブルを繋ぐだけで使えるのだ、と信じたまま使ってしまい、しかしちゃんと焼けなくて、「なんだこのドライブ、糞製品じゃねえか!」「これだから(BUFFALO|I-O DATA|Logitec)は!」とネット上で文句を言いまくるという…。製品紹介ページにちゃんと書いとけばいいだけの話、ではあるのだよな…。「USBケーブルを繋ぐだけで使えます!(※ 読込のみ。書込みはACアダプタが必要)」みたいな。 *1

何にせよ、メディアへの書き込みもあり得るならACアダプタは必須っぽい。となると、ドライブの価格 + ACアダプタの価格で出費を検討しないといけない。しかし、ACアダプタの値段もメーカ毎に差があって…。てなわけで、どれを選ぶべきか悩むなと…。

それにしても、どうしてスマホの充電と同様にUSB端子で電力供給しないのだろう…。いや、でも、もしかすると、USB Type-C とやらが普及すればこのへん悩まずに済むようになるのだろうか。
*1: でも、他がやってないのにどうしてウチだけが、みたいなことを思ってしまうに違いない。逆だと思うのだよな…。自分のところは正直に書いたほうが信用を得られるんじゃないのか…。何なら、他のメーカがいかに騙す気満々でそのあたりを書いてるのかdisっちゃう内容を一緒に書いといてもいいぐらいで…。

2019/04/07() [n年前の日記]

#1 [anime] ルパン三世pert5、19話「7.62mmのミラージュ」を視聴

脚本が、「キノの旅」「ガンゲイル・オンライン」の時雨沢恵一氏だった。もちろん題材は、銃。ひたすら射撃の応酬。さすがとしか言いようがない。素晴らしい。

携帯灰皿に煙草の吸殻を入れて、「カシャッ」と閉じるのがカッコイイ。ポイ捨てより全然カッコイイし、今後喫煙シーンを見せるならコレだなあ、などと感心したり。

2018/04/07() [n年前の日記]

#1 [cg_tools] TSファイルを編集

PT1で録画したTSファイルを編集しようとして試行錯誤。最初は AviUtl で編集できないかと思ったのだけど、映像部分は読み込めたものの音声部分は無視されるようで。専用のツール・ソフトが必要になりそうだなと。

ググってみたら、HDTVtoMPEG2 なるツールが使えそうだと知り。

_tsファイルのCMカット編集とmpeg2変換が一気に、簡単に出来ちゃうフリーソフトHDTVtoMPEG2 - ぼくんちのTV 別館
_PT2で録画したTSファイルをHDTVtoMPEG2でCMカットする - sa-sa-ki.jpのblog

GOP単位でカットできるから無劣化編集ができるらしい。もちろん、GOP単位での編集だから、1フレーム単位で編集できるわけではないけれど。

試したところ、TSとして出力する分にはたしかに編集ができた。ただ、MPEG2 に変換して出力しようとすると、音声がブツブツと切れる上に映像再生もガクガクしてしまう妙なファイルが出来上がってしまった。どうやら TS で出力する以外なさそうだなと…。

TS から mpeg4 への変換は、HandBrake なるツールが良さそう。

_HandBrakeでTSファイルをMP4にエンコードする ・ ヒトノト

一応、以下の記事を参考に、AviUtl での編集・mp4化も試してみたのだけど。

_地デジのTSファイルをAviUtlでH.264エンコードするまでの手順【初心者向け】

時間がかかるし、出来上がった mp4 はアスペクト比が何故かおかしいしで、自分の場合はここまでやらなくてもいいなと…。

2017/04/07(金) [n年前の日記]

#1 [dxruby][ruby] ドット絵モドキを自動生成するソレを自分でも考えて試したり

ドット絵というか PixelArt というかソレっぽいものを自動生成するアレコレを眺めているうちに、もしかして乱数でテキトーにドットを打つだけでもそれっぽくなるんじゃないかと安易に思えてきたので一応試してみたり。Ruby + DXRuby で実験。

乱数でテキトーにドットを打つだけの版。 :

まずは本当に、乱数でテキトーにドットを打ってみた。

_tinypixelartgen_take1.rb
# ドット絵自動生成のテスト
#
# License : CC0 / Public Domain

class TinyPixelArtGen

  attr_accessor :pixels

  def initialize(w, h, mirror_x: true, mirror_y: false, seed: 0, color: 8)
    srand(seed)
    @color = color
    @w, @h = w, h
    @mirror_x, @mirror_y = mirror_x, mirror_y
    @canvas = Array.new(@h).map { Array.new(@w, 0) }
    @pixels = Array.new(@h).map { Array.new(@w).map { Array.new(4, 0) } }

    ww, hh = (@w / 2.0).round, (@h / 2.0).round
    wwf, hhf = @w % 2, @h % 2

    # generate dot pattern
    @h.times do |y|
      @w.times do |x|
        @canvas[y][x] = rand(@color)
      end
    end

    # generate palette
    @pal = Array.new(@color)
    @pal.size.times do |i|
      if i == 0
        r, g, b, a = 0, 0, 0, 0
      elsif i == 1
        r, g, b, a = 0, 0, 0, 255
      elsif i == @pal.size - 1
        r, g, b, a = 255, 255, 255, 255
      else
        r, g, b = rand(256), rand(256),  rand(256)
        a = 255
      end
      @pal[i] = [r, g, b, a]
    end

    # make pixel data
    @h.times do |y|
      @w.times do |x|
        sx, sy = x, y
        sx = (x >= ww and @mirror_x)? (ww - 1 - wwf - (x - ww)) : x
        sy = (y >= hh and @mirror_y)? (hh - 1 - hhf - (y - hh)) : y
        r, g, b, a = @pal[@canvas[sy][sx]]
        @pixels[y][x] = [r, g, b, a]
      end
    end
  end
end

if $0 == __FILE__
  # ----------------------------------------
  require 'dxruby'

  def conv_pixels_to_image(pixels)
    w, h = pixels[0].size, pixels.size
    img = Image.new(w, h, [0, 0, 0, 0])
    h.times do |y|
      w.times do |x|
        r, g, b, a = pixels[y][x]
        img[x, y] = [a, r, g, b]
      end
    end
    return img
  end

  def generate_images(n, seed)
    sz = 16
    imgs = []
    n.times do |i|
      pat = TinyPixelArtGen.new(
        sz, sz,
        mirror_x: (rand > 0.5)? true : false,
        mirror_y: (rand > 0.5)? true : false,
        seed: seed + i,
        color: 8
      )
      imgs.push(conv_pixels_to_image(pat.pixels))
    end
    return imgs
  end

  Window.resize(640, 480)
  Window.bgcolor = [32, 128, 196]
  Window.minFilter = TEXF_POINT
  Window.magFilter = TEXF_POINT
  cnt = 96
  seed = 0
  imgs = generate_images(cnt, seed)
  seed += cnt

  Window.loop do
    break if Input.keyPush?(K_ESCAPE)

    if Input.keyPush?(K_SPACE)
      imgs = generate_images(cnt, seed)
      seed += cnt
    end

    scale = 3
    border = 4
    x, y = 0, 0
    imgs.each do |img|
      Window.drawScale(x, y, img, scale, scale, 0, 0)
      x += img.width * scale + border
      if (x + img.width * scale) >= Window.width
        x = 0
        y += img.height * scale + border
      end
    end
  end
end

結果は以下。

take1_ss.png

うむ。完全に甘かった。全く話にならない。ダメだこりゃ。

輪郭を与えてみた。 :

sinカーブを使って、ざっくりとした形っぽいものを与えてみた。かつ、最後にエッジ(境界線)を追加してみた。

_tinypixelartgen_take2.rb
# ドット絵自動生成のテスト
# sinカーブで型を与えて生成、かつ、境界線を付加してみる
#
# License : CC0 / Public Domain

class TinyPixelArtGen

  attr_accessor :pixels

  def initialize(w, h, mirror_x: true, mirror_y: false, seed: 0, color: 8)
    srand(seed)
    @color = color
    @w, @h = w, h
    @mirror_x, @mirror_y = mirror_x, mirror_y
    @canvas = Array.new(@h).map { Array.new(@w, 0) }
    @pixels = Array.new(@h).map { Array.new(@w).map { Array.new(4, 0) } }

    ww, hh = (@w / 2.0).round, (@h / 2.0).round
    wwf, hhf = @w % 2, @h % 2

    # generate dot pattern
    ang = rand(360)
    ang_d = rand(270.0 / @h) + (45.0 / @h)
    (1..(@h-2)).each do |y|
      rad = (ang + (ang_d * y)) * Math::PI / 180.0
      rw = (((w * 4 / 10.0 - 1) * Math.sin(rad)).to_i + (w * 5 / 10.0)) * 2
      rx = (w - rw) / 2
      @w.times do |x|
        xx = rand(rw) + rx
        @canvas[y][xx] = rand(@color)
      end
    end

    # generate edge
    @h.times do |y|
      @w.times do |x|
        next if @canvas[y][x] <= 1
        @canvas[y - 1][x] = 1 if (y - 1 >= 0 and @canvas[y - 1][x] == 0)
        @canvas[y + 1][x] = 1 if (y + 1 < @h and @canvas[y + 1][x] == 0)
        @canvas[y][x - 1] = 1 if (x - 1 >= 0 and @canvas[y][x - 1] == 0)
        @canvas[y][x + 1] = 1 if (x + 1 < @w and @canvas[y][x + 1] == 0)
      end
    end

    # generate palette
    @pal = Array.new(@color)
    rr, gg, bb = rand(128), rand(128), rand(128)
    @pal.size.times do |i|
      if i == 0
        r, g, b, a = 0, 0, 0, 0
      elsif i == 1
        r, g, b, a = 0, 0, 0, 255
      elsif i == (@pal.size - 1)
        c = 255 - rand(48)
        r, g, b, a = c, c, c, 255
      else
        r = rr + rand(128)
        g = gg + rand(128)
        b = bb + rand(128)
        a = 255
      end
      @pal[i] = [r, g, b, a]
    end

    # make pixel data
    @h.times do |y|
      @w.times do |x|
        sx, sy = x, y
        sx = (x >= ww and @mirror_x)? (ww - 1 - wwf - (x - ww)) : x
        sy = (y >= hh and @mirror_y)? (hh - 1 - hhf - (y - hh)) : y
        r, g, b, a = @pal[@canvas[sy][sx]]
        @pixels[y][x] = [r, g, b, a]
      end
    end
  end
end

if $0 == __FILE__
  # ----------------------------------------
  require 'dxruby'

  def conv_pixels_to_image(pixels)
    w, h = pixels[0].size, pixels.size
    img = Image.new(w, h, [0, 0, 0, 0])
    h.times do |y|
      w.times do |x|
        r, g, b, a = pixels[y][x]
        img[x, y] = [a, r, g, b]
      end
    end
    return img
  end

  def generate_images(n, seed)
    sz = 16
    imgs = []
    n.times do |i|
      pat = TinyPixelArtGen.new(
        sz, sz,
        mirror_x: (rand > 0.5)? true : false,
        mirror_y: (rand > 0.5)? true : false,
        seed: seed + i,
        color: 8
      )
      imgs.push(conv_pixels_to_image(pat.pixels))
    end
    return imgs
  end

  Window.resize(640, 480)
  Window.bgcolor = [32, 128, 196]
  Window.minFilter = TEXF_POINT
  Window.magFilter = TEXF_POINT
  cnt = 96
  seed = 0
  imgs = generate_images(cnt, seed)
  seed += cnt

  Window.loop do
    break if Input.keyPush?(K_ESCAPE)

    if Input.keyPush?(K_SPACE)
      imgs = generate_images(cnt, seed)
      seed += cnt
    end

    scale = 3
    x, y = 0, 0
    imgs.each do |img|
      Window.drawScale(x, y, img, scale, scale, 0, 0)
      x += img.width * scale + 4
      if (x + img.width * scale) >= Window.width
        x = 0
        y += img.height * scale + 4
      end
    end
  end
end

結果は以下。

take2_ss.png

むっ。ちょっとはマシになってきた、そんな気がしないでもない。

が、これは 16x16ドットで生成して3倍に拡大表示してるからそれっぽく見えている、てなところもあって。例えば、32x32ドットで生成してみると…。

take2_ss2.png

「なんじゃこりゃああ!(ジーパン刑事風に)」度が増してしまってダメダメ状態に近づいていくなと。

小さく作って拡大するのはどうだろう。 :

世の中には、昔の荒いドット絵を如何にそれらしく綺麗に拡大するか、てなアルゴリズムがいくつか存在していて。

_Scale2x
_Scale2x Algorithm
_HiEnd3D - hq3x (Internet Archive)
_Pixel Scalers
_Pixel art scaling algorithms - Wikipedia

もしかすると、小さいサイズで自動生成しておいて、そこからこれらのアルゴリズムで拡大、みたいなことをすれば多少はそれらしくなる、かもしれないと夢想してみたりもして。となると、まずはこれらのアルゴリズムを試しに書いて実験してみて、かな…。

最初から意味がありそうな断片を配置するのはどうだろう。 :

例えば四角を、それもグラデ塗りした四角を、ランダムにテキトーに場所にいくつか配置していって、ソレを横方向 or 縦方向で反転描画するだけでもそれっぽくならないだろうか。そのためには、四角をグラデ塗りする処理を書いてみて…かな…。明度、いや、輝度がちゃんと変わっていかないと立体感のあるグラデにならないだろうから、色相、彩度、輝度からRGB値を求める処理(HSL → RGB変換)も書いてみないと…。

#2 [anime] 「AKIBA'S TRIP」アニメ版最終回を視聴

面白かった…。カットが変わるとパロディ、またカットが変わると別のパロディ、みたいな。よくまあここまでツッコめるもんだなと…。秋葉原を舞台にした作品らしいというか…。

2016/04/07(木) [n年前の日記]

#1 [cg_tools] Vue 5 Easelはレンズフレアを消せないらしい

Vue 5 easel で360度パノラマ画像をレンダリングする際に、太陽にくっついてくるレンズフレアの形がかなり歪んで酷い画像になってしまうので、レンズフレアを消すことはできないのかと調べてみたのだけど。どうやら Easel版ではそんなことはできないらしい。

上位版なら、大気エディタのウインドウに「効果」というタブがあって、そこでレンズフレアを無効にできたりするようで。あるいは、レンズフレアエディタという機能があって、そこでレンズフレアを無効にすることができるらしい。しかし、Easel版にそんなものは無い。

てなわけで、Easel版でパノラマ画像をレンダリングしたかったら、レンズフレアが出てこないシーンデータを作ってレンダリングするしか無さそうだなと…。つまり、太陽が直接映ってるようなデータは作れない。山か何かで太陽を隠すとか、そんな誤魔化し方をするしかナサゲ。となると当然、地形への光の当て方にも制限が出てくるわけで。

せっかく買ったソフトだから、どうにか使い道がないかと色々試してみたけど…。Vue、使えねえ。

カメラの設定で状態が変わるっぽい気もする。 :

360度パノラマ画像をレンダリングする際、メインカメラの焦点距離に大きい値を入れてみたら、レンズフレアが出ない状態になる時があるような気がしてきた。例えば焦点距離を135mmぐらいにしてみたり、とか。その代り、太陽がどこかに行ってしまう。地形データの明るさは太陽がある時と同じに見えるけど。どうしてこういう状態になるのかは謎。

#2 [gimp] GIMPのMathMap用スクリプトを少し修正

昨日書いた GIMP + MathMap用のスクリプトは、横:縦=1:1の心射円筒図法の画像を、MathMap で正距円筒図法の画像にしてから、GIMPで2:1になるように縦方向を縮小、ということをやってたのだけど。MathMapのフィルタ処理+GIMPの縮小処理で、2回の変換が入るせいか、画像が荒れてしまうことに気づいたわけで。

そこで、MathMapで縮小までやってしまうようにスクリプトを少しだけ修正。これなら変換が1回で済むから多少はマシなはず。

_cylindrical2equirectangular_scale.mm
# cylindrical to equirectangular and scale
filter cylindrical2equirectangular_scale(image in)
    in( xy: [x, (1/pi) * tan( clamp(y*pi, -pi/2, pi/2) ) ] )
end
修正内容は…。tan( y * (pi / 2) ) としていたところを、tan( clamp(y*pi, -pi/2, pi/2) ) にしただけ。

画像の縦方向を半分に縮小するなら、in(xy:[x, y * 2]) と書けばいいわけだけど。そのノリで、tan( y * (pi / 2) ) * 2 と書いてしまうと、心射円筒図法から正距円筒図法に変換するあたりがおかしくなる。この場合、tan() に渡す値を x 2 してやらないといけない。ということで、tan( y * (pi / 2) * 2) = tan( y * pi ) になる。

ただ、tan() に渡す値を x 2 にしただけでは、画像が縦方向に何回も描画される結果になってしまう。何故かというと、tan() に渡してる値が、-90度 〜 +90度を超えてしまうため。 _tan()は90度を超えるとまた同じ値の変化が表れてしまう ので、同じ画像が何回も描画されてしまうわけで。

なので、clamp(値, 最小値, 最大値) を使って、値が -90度から+90度の範囲に収まるようにしてる。

使う時の注意点・作業手順。 :

前述のスクリプトを使う際、対象画像は、横:縦 = 1:1 の画像にしておくこと。

例えば、Vue で 46:21、1024 x 467ドットの360度パノラマ画像をレンダリングしたとして。GIMP で開いてから、以下のような手順になる。
  1. 画像 → キャンバスサイズの変更。縦幅を横幅と同じ 1024ドットに、かつ、画像を中央に配置する。オフセットの「中央」ボタンを押せば、中央に配置できる。あくまで、キャンバスサイズの変更をするだけ。画像の拡大縮小はしない。拡大縮小してしまうと、心射円筒図法から正距円筒図法への変換がおかしくなる。
  2. そのままだと、対象レイヤーが以前のサイズを引き継いだままになってる。レイヤーサイズも変更しないといけない。レイヤーを右クリック → アルファチャンネルの追加。かつ、レイヤーを右クリック → レイヤーをキャンバスに合わせる。これで、レイヤーも、キャンバスと同じ、1:1のサイズになる。
  3. 前述のMathMapスクリプトを実行。フィルタ → 汎用 → MathMap。これで、正距円筒図法の画像になってるはず。

変換後、上下の透明部分が邪魔なので、トリミングしないといけない。
  • 画像 → 画像の自動切り抜き。これで上下の透明部分を省いたサイズでトリミングされる。その後、画像 → キャンバスサイズの変更。横:縦 = 2:1 のキャンバスサイズに変更する。
  • あるいは、ガイドと切り抜きツールを使ってトリミングしてもいい。表示 → ガイドにスナップ、が有効な状態で、画像 → ガイド → 均等にガイド。横の分割数を1、縦の分割数を4にしてガイドを作成。これで、切り抜きツールを使って 2:1 のサイズでトリミングしやすくなる。

「均等にガイド」は、GIMPの追加スクリプト。 _均等にガイド(Grid of guides) から入手できるはず。

MathMapの設定について。 :

色々試してみたけど、MathMap の Settings の Supersampling は、有効にすればいいというものでもなさそうだなと。有効にしたら、結果画像が結構ぼやけてしまった。

デフォルトでは Antialiasing だけチェックが入ってるけど、その状態が、バランスが取れてるのかもしれず。

#3 [pc] Amazonから色々届いた

一応メモ。

PCケースのファンの回転数がどうもおかしいらしくて、Intel Desktop Utility が警告を発するので、交換しないとダメかなと購入。

HDDケースは、弟が帰省した際に置いていってくれたHDDを入れる予定。HDDのエラーチェック自体は済んでたはずなので、入れればOKのはず。

USBメモリも、少し前に届いてことを忘れてた。メールを確認したら、2016/04/04に届く予定だったらしい。 「無期限保証」と書いてあるけど、どういう意味なんだろ…。たしか、購入後xx日以内にTranscendのサイトでユーザ登録しないと保証が利かない、という話をどこかで見かけた記憶があるけれど。さておき。とりあえず、このUSBメモリは、Windows10の回復ドライブを作成するために使用する予定。

2015/04/07(火) [n年前の日記]

#1 [nitijyou] 歯が取れた

取れたというか、剥がれたというか。上の歯の貼り付けてあった部分が取れてしまって。ごはんと納豆を食べてる時に取れたので、もうボロボロだったのかなと。

いくらなんでもこの状態はマズいだろうから、歯医者を探して明日は行ってこないと…。

2014/04/07(月) [n年前の日記]

#1 [nitijyou] 歯が痛い

右下奥歯のあたりが沁みる。歯医者行かないとダメかな…ダメだろうな…。

2013/04/07() [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、12:45-16:00まで自宅サーバ止めてました。

どうも近くに雷が落ちたようで。「バシッ」という音と、どこかの機器がフラッシュしたような光が。もしかすると、何か家電が壊れてるかもしれず…。PC関係が壊れてないと助かるのだけど…。

2012/04/07() [n年前の日記]

#1 [pc] メインPCのBIOS等をアップデート

Intel DH67BL のBIOSその他を更新。

BIOSは、0125から0151に。BL0151P.BIO をDLしてUSBメモリのルートディレクトリにコピー。USBメモリを差したまま、BIOS起動画面でF7キーを押して、USBメモリを選択後、ファイルを選択してアップデート。

サウンドドライバを更新。AUD_Vista_Win7_6.0.1.6526_PV_Realtek.exe をDLして実行。既に入っているバージョンがアンインストールされる → 再起動を要求 → 再起動後に新版がインストールされる → 再起動を要求。ちなみに DH67BL には Relatek ALC892 が載っている模様。今回入った版はR2.67だったが、Relatek で R2.68 が公開されていたようなので、64bit_Vista_Win7_R268.exe をDLしてインストールし直し。…最近の版はASIO対応という話もどこかで見かけたが、それらしいものが入っているようには見えず。

一応チップセットドライバも更新。INF_allOS_9.3.0.1019.exe をDLして実行。

USB3.0ドライバも更新。USB3.0_allOS_2.1.28.0_PV.exe をDLして実行。

2011/04/07(木) [n年前の日記]

#1 [pc] CD-RをDVD-Rに焼き直し

枚数を減らしたい。CD-Rに記録されていたファイルを、Ideapad S10-2 + IO-DATA DVRP-U8XLE2 で読み込んで、DVD-Rに焼き直し。CD-Rで14枚ほどをDVD-Rで2枚ほどに。

しかし、2枚目のDVD-Rを焼いたところで、その後 CD-R 読み取り時にエラーが出るようになってしまった。もしかすると DVRP-U8XLE2 が熱暴走しているのだろうか。それとも寿命か。あるいは CD-Rメディアがダメになっているのか。

USB接続外付けケース + DVD-ROMドライブ TOSHIBA SD-M1712 を引っ張り出して、CD-Rを入れてみた。すいすいと読んでくれた。となると、DVRP-U8XLE2 が怪しい。

#2 [pc] 三菱から液晶ディスプレイの修理見積書が届いた

FAXで送られてきた。受付の人が、地震災害であることをちゃんと伝えてくれたようで、そういう扱いになっていた。LCDパネル代が20,450円で、事務手数料なるものが2,100円。合計22,550円、になる見通し。

電話をかけて、そのまま修理を続けてほしい旨を伝えた。

修理が終わった際には、こちらから取りに行かないといけないらしい。ユーザが直接持ち込んだ場合は、引取りもユーザにお願いしてるとのこと。

来週頭には修理が終わって郡山営業所に運ばれる、とも言っていた。数週間〜1ヶ月ぐらいかかるものと予想してたので、ありがたい話。が、まだ不測の事態が起きる可能性があるのでアレだけど。こういう時期・状況だから、修理を要する製品が大量にあったら、通常時のスケジュールでは進まないだろうし。

#3 [nitijyou] 震度5弱の地震

夜の11:00頃、緊急地震警報が鳴って部屋が揺れ出した。かなりの大きさ。またあのクラスが来たのか、と思った。あのクラスはしばらく来ないだろうと、何の根拠もなく、いつのまにやら勝手に思い込んでいた、自分の愚かさに気がついた。喉元過ぎればなんとやらになっていた。自分は馬鹿だ。

部屋の戸を開けて、脱出口を確保しておくことにも気がつかなかった。2回目の体験だと言うのに。つくづく、自分の馬鹿さ加減に呆れる。

前回の反省から、家具は一応ヒモで固定してあったので、今回は倒れずに済んだ。ただ、PCラックの位置は、ヒモで抑えられていない方向に大きくズレてしまった。キャスターが、下に敷いているMDF板から落ちてしまったので、上に乗っている各機器が微妙に落下したかのような衝撃を受けてしまったはずで。もう少し対策が必要。

PCラックに乗せてある自宅サーバ機がまた揺れるのと怖いので電源を落としておいた。

2010/04/07(水) [n年前の日記]

#1 [anime] 夢色パティシエールの画面

オジョー帝国?の回を見て感心。冒頭の、校舎の影の中での会話シーンや、廊下の窓から光が溢れている感じとか、お嬢がハートを抱えているカットのお嬢だけ色調が違うところとか。時々、光の表現・フィルタ処理に異様に気を配った回を見かける印象。例えば、メガネの人が失敗して実家に帰った回も、しっとりした画作りを心掛けていて、目にした瞬間ビックリしたっけ。これは演出家の工夫なんだろうか。それとも撮影担当の人が工夫してるんだろうか。どの階層の作業の功績なのか一視聴者に過ぎない自分には想像できないけれど、何はともあれ素晴らしい。平面的でのっぺりスカスカな画作りで済ませようと思えば済ませられる種類の企画であろうに、本来そこにあるはずの空気感を極力表現してみせようと一工夫を加えるその姿勢には頭が下がる。素晴らしい。

#2 [movie] 「ネメシス/S.T.X」(Star Trek: Nemesis)を視聴

NHK-BS2で放映されてたものを録画してたので消化。STAR TREKシリーズはほとんど見てないのだけど。大体分かった。

転送装置って便利だな…。

字幕を眺める限り、「アンドロイド」「ロボット」の呼称が混在してるように見受けられたけど。作品設定では明確に分けていないのだろうか。それとも字幕にする際の文字数制限等で混在してしまったのだろうか。

#3 [game] 8bitPC時代に色んな機種に移植されていたスタートレックゲームの版権って

今はどこが持ってるんだろうか。そもそもオリジナルは、どの機種向けのゲームだったのだろうか。

_スタートレック (マイコンゲーム) - Wikipedia :

詳細が書いてあった。1971年に作られたらしい。ということは、40年近く前のゲームということになるのだろうか?

_i-mode Java - トレック :

iアプリ版もあるのか。

2009/04/07(火) [n年前の日記]

#1 [pc] 色々インストール中

とにかく色々と。

Subversionをインストール。 :

_[admin] Subversion 1.4.6 -> 1.6.0 upgrade (Windows) - kirara(397) の日記 を参考にして作業。

_Windows用バイナリ のうちの、Tigris.org: Apache 2.0 or Apache 2.2 のリンクを辿って、svn-win32-1.6.0.zip をDL。解凍。任意のフォルダに移動。pathにbinフォルダを追加。

iconvとやらも絡んでくるらしいので、ユーザ環境変数に、
APR_ICONV_PATH=C:\usr\local\Subversion\iconv
みたいな感じで、Subversion インストールフォルダ内の iconv フォルダのパスを指定。

_EBAz Blog Subversion を参考に、CollabNet にユーザ登録して CollabNetSubversion-server-1.6.0-8.win32.exe もDLしたけど、なんだかサーバその他もインストールしようとするみたいで、インストールをキャンセルしてしまったり。

wget :

なんでか知らんが Firefox で pdf がダウンロードできない。Operaも同様。URLは分かってるので、DLツールを何か導入しようかと。ということで wget。

_Wget for Windows のページから、Complete package, except sources をDL。wget-1.11.4-1-setup.exe が落ちてきた。実行してインストール。インストールされたフォルダにパスは通ってないようなので、pathに bin フォルダを指定。

旧メインPC中のリポジトリが入ってたフォルダをコピー。 :

コミットしたフォルダを右クリックしたらログが見れた。ということは、一応関連ファイル・関連フォルダはコピーできた、ということでいいんだろうか。ちと不安ではあるけど。

2008/04/07(月) [n年前の日記]

#1 [cg_tools] EDGE2のユーザ登録が消滅していてちと焦る

iアプリの画面レイアウト変更をシミュレートするために、ドットエディタの EDGE2 を起動したところ、「ユーザ登録してないと全部の機能は使えんぞ」みたいなメッセージが。はぁ? わたしゃお金払って登録済みのはずですが?

EDGE2の、ヘルプ→ユーザ登録を選んでみたら、未登録の状態になっている。なんでやねーん。

と思ったところで気がついた。先日、M/Bのチップセットドライバだの、ビデオカードのドライバだの、そのへんをアップデートしたせいかもしれん。

EDGE2のユーザ登録の流れは、
  1. 動作環境上でIDを作り、IDを作者さんにメールで送る。
  2. 銀行の振込先等を知らされるので、振り込んで、メールでその旨を連絡。
  3. IDと対応するパスワードを送り返してくるので、パスワードを打ち込んで登録。
という流れなのだけど。おそらくは、ID作成時に、ドライバのバージョンやら種類やらそのへんまでをハードウェア情報として扱った上でIDを作ってるのではないかと想像。だから、ドライバを入れ替えたことでIDが変化→「IDが違ってるやないか。てことはお前不正利用とちゃうか。ユーザ登録抹消!」てな処理になったのかもしれず。いや、あくまで想像だけど。

iアプリ用画像制作の都合上、レイヤー保存やgif保存ができないのは痛い。ので、作者さんに状況説明メールを送ったところ、数時間も経たないうちにパスワードを再発行してもらえた。対応早。助かった。

しかし…。当面の問題は解決したけど。これは後々、確実に問題が出てくる仕様だな。>EDGE2の認証。どうしたもんか…。

気づいた問題点。 :

  • ドライバ等のアップデートは比較的よくあることだと思うのだけど。(メーカ製PCですら、ドライバはそこそこの頻度で不具合解消のために更新されたりするし。) 万が一、ドライバのバージョン等までハードウェア情報として扱ってるのだとしたら、それはちょっとどうなんだろうと。無駄にパスワード再発行の手間を、作者さんのみならず、ユーザに強要している可能性はないだらうか。MSですらアクティベーション情報には期限をつけたり段階を設けたりしてるわけで…。MSより厳しくしてどうするんだ、みたいな。
  • 新しいPCを購入して、以前のPCから新PCにEDGE2を移行したいと思ったときは、どうすればいいのだろう。以前のPC上でEDGE2のユーザ登録を無効にした上で、新PCに登録を移行することは可能なのだろうか。その方法は用意されているのだろうか。や、ここ数日、PCのスペック不足で困っていて、新PC購入を検討していたりするわけで。その時を考えると頭が痛い。それでなくても環境移行は面倒なのに…。
  • パスワード再発行の問い合わせが必要になった時に、万が一、作者さんが事故や病気でお亡くなりになってたらどうするのだろう。せっかくの優れたソフトでありながら、闇に葬らねばならないのだろうか。…まあ、「俺の死んだ後のことは知ったこっちゃねえ」というのもアリではあるんだけど…。
  • パスワード再発行の問い合わせメールをその都度送ることを前提にする、というのがアリだとしても。その問い合わせメールを書く際に「文面をどうしよう」などと悩みながら書くのが、ユーザとしては結構苦痛。最初のパスワード発行もそうなのだけど、メール文面の定型内容を事前に示したほうが、作者にとってもユーザもとってもやりとりが随分楽になるのではなかろうか。
とりあえず、一番最後の、「この手のやりとりは定型なソレを用意したほうがよくないスかね…」てなあたりをちょっと匂わす文章をメールに含ませつつ送ってみたけどなんかあっさりスルーされてしまった。トホ。

ハードウェア情報を拾ってまで不正利用対策をするのであれば、認証作業の自動化についてもよほど真剣に考えて構築する必要があるよな、と思ったりもするのだけど。そこが手作業だったり、ユーザに余計な負荷をかけてしまうってのはどうなんだろうなぁ…。なんだか矛盾を感じなくもない。

まあ、需要が少ないツールだろうから、盗まれないようにガッチリやりたいてのはなんとなく判るのだけど。ユーザに余計な負荷をかけない方向でもガッチリやってくれたら、とも思ってしまったわけで。MSやAdobeのようにWeb経由の認証システムを構築する、なんてのは比較的理想に近いかもしれない仕様なれど、個人での実現は難しいだろうから横に置いておくとして。<いや、Web関連技術に熟知した人なら不可能ではない感もあるんだけど。せめて、メール定型文をサイトに載せておくだけでも違うのでは、というかソレがあったら個人的にものすごく楽だったんだけど、そういう内容をページに載せるのってそんなにシンドイ作業なんだろうか。また、使ってるサーバ・プロバイダによっては、メール送信フォームを使えるところもあったりするので、そういう作りにしておけば、ユーザも楽、作者も楽、閲覧者からの問い合わせも増えてウマーじゃないのだろうかとも思ったり。や、某社のサイトにソレを用意したことがあるんですが、問い合わせがそこそこ増えたと聞いたので、商売的には効果あるみたいで。使える環境が限られてるのがアレですが。

つーか現状では、企業に導入とか絶対に無理だよな、このソフト…。100台ほど入れて使いたいという話になったら、100台分のIDを顧客にわざわざ作らせて、100台分のパスワード送って対応するんか、みたいな。その100台が、VistaとかWindows7とかに更新されたらまた大変。そのへん面倒なソフトは、そうそう導入できないよなぁ…。まあ、こういうジャンルのソフトが必要になる会社ってのは、えてしてツールを自社開発してる予感もあるけれど。そもそも今時ドット絵描く場面は少ないか。ぎゃふん。

ふと。シェアウェアの成功例として秀丸が脳裏に浮かんだり。昔勤めてた会社でも大量にライセンス購入してたけど、アレはたしか、パスワードさえ合ってればそのへんの面倒はなかったような。今はどうなんだろう。と思ってちょっと確認してみたけど基本的には変わらないように見える。そんな認証でも商売にはなるのか。いや、時代も関係あったのかしら。どうなんだ。

ライセンス認証が面倒なソフトは、上手にシステムを構築していかないと、かえって売上を落としてしまう印象が。ガチガチな認証にして売上を保ってるソフトって、どのくらいあるんだろう。うーん。

まあ、WinGrooveみたいに、不正利用のように見えたらHDDフォーマット、とかされることを考えたら、マシといえばマシではあるんですが…。アレって結局裁判にはなったんだろうか。さて。

何かこう、有償ソフトの不正利用を確実に予防しつつ、それでいてユーザの負担が増えない、そんな技術・仕組みはないものかしらん。このへん単純に、技術的な問題・技術的な課題であろう気もする。…いや。何の情報を鍵にしてやりとりするかのところを詰めていけばもっと良い仕組みを作れるだろうか。

まあ、色々な問題があるな、と思っただけの話です。

#2 [zatta] シェアウェアにするには色んな覚悟が必要であろう気がする

世の中のプログラマーが、自作のソフトを、フリーソフトで公開したり、オープンソースにしたりするのは、シェアウェア・有償ソフトにしたときのアレコレがとにかく面倒だから、というのもあると思うのだけど。実際はどうなんだろうなぁ。

シェアウェアにするからには、よほど覚悟を決めて公開しないとあかんよな、という気も。考えてみれば、本来企業がそれぞれ専門に人員を用意してやってることを、規模が小さいとは言え全部個人でやろうとするわけだから、個人にかかる負荷は圧倒的に高いはずだよなと。

で。そこらへんを実に真面目に真剣にアレコレ考えていくと、大半の人は、「うーん。お小遣い欲しいけどそこまで面倒なのは嫌だな」となるので、フリーソフトとして公開したり。あるいは、「俺が死んだ後のことを考えると…クローズドソースにすると俺しかメンテできんし…」と思ったりしてオープンソースにしてみたり。そういう展開になる場面もあるのかな、と想像したりして。

逆に考える(?)と、シェアウェアってのは、「金を稼げるなら面倒もなんのその」とか、「企業立ち上げたから俺が居なくなってもシステムが回せるはず」とか、そのくらいの覚悟がない状態で選んだらいかん配布形態じゃないのだろうか。みたいな。ってあまりアレコレ書くと「面倒だからソフト公開停止」とか言いだす人も居るんで迂闊に書けないのがアレなんだけど。<オイ。公開停止にするぐらいならオープンソースにして、だけど販売も続ける、とかやったほうがいいよな。公開停止にしたら今後は一銭も入ってこないけど、それに比べたらオープンソースで販売するほうが気楽になれるところがある上に金が入ってくる可能性もあるのでまだよほどマシな状況。たぶん。

というか、シェアウェアでそれなりに儲けが出てるところのソフトを参考にすれば、見えてくるものもあるんだろうな。認証はどのあたりまでするか、とか、サイトでの情報提示はどの程度まで行うか、とか、支払方法はどの程度用意しているか、とか。こういったあたりに関しても、先駆者が居ると言えば居るのだろうから、車輪の再発明?をしなくてもいいよな。たぶん。おそらく。

#3 [iappli] 差し替え用の画像を作成中

背景上に載せる障害物の画像を変更せよという要求が届いたので、差し替え用の画像をblenderで作成。GIMPでレタッチ等々。ちなみに、一部じゃなくて全部差し替える方向で。ですよね。やっぱり。そうでなくちゃ(?)。

2007/04/07() [n年前の日記]

#1 [cg_tools][windows] GIMPでフォントが表示できなかったので色々調べたり

WIndows XP Home SP2 + GIMP 2.2.13 上で、 _和田研細丸ゴシック_XANO明朝 (XANO-mincho-2004-0509.zip) が表示できず、悩んだり。いや、表示されるんだけど、どう見てもMSゴシックと同じ形状になってるように見える。

色々検索したところ、Unicode 3.2 なるものに対応したフォントデータじゃないとダメっぽい。対応してない場合はMSゴシックのそれが選ばれてしまうのだろう。…その場合は「□」「・」とか空白にしてくれれば助かるんだが。文字が表示されてるから大丈夫だろうと思い込んで、うっかり使っちゃいけないフォントを使ってしまったら、マズイではないか。

XANO明朝の場合は、 _XANO明朝U32フォント なるものが Unicode 3.2 に対応してるらしいのでそちらをインストールすればいいみたい。和田研細丸ゴシックは、unicmap.exe なるもので変換?をすれば一応使える、みたい。たぶん。

_charset.info - unicmap :

_PC初心者のための、「unicmap」の超簡単な使用方法 (Windows 2000/xp/Server 2003 の場合)
これは何?

Shift_JIS-2004エンコーディングのTrueTypeフォントにUnicodeのcmapを付け加えるなどの変更を加えて、Unicode 3.2フォントとして使えるようにします。

charset.info より

#2 [pc] 潮待フォントってどこに消えたんだろう

_書体関係 Wiki - freefont にリストアップされてたのだけど、404。どこに消えたんだろう。

#3 [nitijyou] ktのサイトを更新

パンフレットPDFを差し替え。パンフレットPDFのほうが上にくるようにレイアウトを若干変更。ついでにパンフレットPDF表紙と同様のロゴ画像を追加。

バーの紹介ページも作成。 :

あくまで仮だけど、ある程度出来てきたのでktのサーバにアップしてURLを知らせた。。これでOKということなら、住所その他を正確に修正する予定で。そもそも公開しない可能性もありそうだけど。

#4 [anime] 「寺へ」の1話を鑑賞

「てらへ」で変換するとアレなことに。辞書登録しとくか…。>「地球へ…」

期待し過ぎてたかもしれん。絵は綺麗なんだけどなぁ。

#5 [anime] のだめカンタービレ、アニメ版の1話を鑑賞

福島でも深夜に始まったらしい。HDDレコーダに録画しておいたものを鑑賞。

愕然とした。原作は漫画なのに、実写ドラマ版のほうが良い出来で、アニメ版のほうがアレな出来とは…。信じられん。フツーは逆だろうと。や、実写ドラマ版のテンポに自分が慣れちゃっただけかもしれんけど。

のだめが可愛くなり過ぎてる気がする。絵もそうだし、声もそうだし。気持ち悪いキャラが時々凄いところを見せることで面白いキャラに見えてくるのでは、と思うのだがなぁ…。

監督はカレカノのコンテ・演出もやってた人なのか。にしては…うーん。

なんとなくだけど。オシャレ系な作品にしようとしてるのかな、という感じもしたり。レディースコミックに連載されてる作品だし。クラシック音楽を扱う作品だし。今時のアニメ制作者ってのはその手の分野にコンプレックスがあって、故に「オシャレ系にしなきゃダメ?」と思い込んじゃったり。するのかどうかはまったく知らないですが。…もしかすると原作者、あるいは編集部の要望なのかもしれんか。

2006/04/07(金) [n年前の日記]

#1 [nitijyou] ktからメール

印刷所からのメールが添付されてた。pdfの容量を減らすと、文字が斜めになるとかで。…何のソフトを使って組版(?)・pdf変換をしてるんだろう。

とりあえず、「斜めになってもいいからファイルサイズを小さくするか」「お金がかかってもいいからホームページスペースを増やすか」「時間がかかってもいいから手作業でhtml変換するか」の選択肢3つを提示してkt側に決定してもらうことに。

個人的には、そもそもktがISDN環境なんだから、ファイルサイズを小さくするのがヨサゲな感もするのだけど。

#2 [pc] PDF関連を検索

変換したら文字が斜めになる、的な不具合についてどこかに情報がないものかと。

_Adobe Illustrator のファイルを PostScript プリンタから出力すると何故だが文字化け(変な記号、文字が斜め等)を起こす。 :

_イラストレーター7.0のEPSはPDFはディスティラー通すと文字が斜めになりますよね。
_[224962]Visio 文書を PDF に変換するとテキストの位置や大きさが不正確になる
_[215425]Illustrator 8.0:PDF保存すると文字が斜めになってしまう

結構発生しやすい問題なのだろうか。

Acrobat Distillerを使用して変換した場合、[ファイル]メニューから[プリント]を使用して変換します。

ダイアログボックス内の[フォントをダウンロード]にチェックを入れないと2バイト文字が斜体になって変換されます。
しかし、[フォントをダウンロード]にチェックを入れると、漢字フォントはAcrobat上では画像として扱われます。

[215425]Illustrator 8.0:PDF保存すると文字が斜めになってしまう より

そんな殺生な。

_SoftFarm.net - PDF関連記事 :

_PDFその他

PDF関連のツールが紹介されてる。ありがたや。辿っていって、 _papy's softwarelibrary から、
  • PDF最適化 - PDF Cleaner v1.20
  • PDF to Text - PDFDocText v1.21
  • PDFで使用してるフォント情報取得 - PDF FontDecoder v1.21
をDL。インストール。せめてテキストファイルにできれば、html化も多少は視野に入ってくるだろうと。

今回受け取ったpdfは、一切テキスト化できなかった。フォント情報も取得できず。…なんとなくだけど、全部画像になってそうな予感。

以前の版 = フォントが斜めになってる版は、テキストに変換できた。しかし順番はめちゃくちゃ。仮にhtmlに変換するとしても、自動化は無理っぽい。おそらく、「印刷されたものが最終データ」という考えで作られてるから、レイアウト情報の行儀?が悪いのだろう。<印刷屋さんの仕事だから当たり前。…フォント情報は取得できた。全部埋め込まれてない状態。見かけないフォント名ばかりが並んでる。

#3 [anime] SAMURAI7、1話

NHK総合で深夜に流れてた。幸いにも1話だった。

見ていて、なんか寒いんだけど。何故だろう。そう感じさせる「何か」の正体がわからず。

何が映ってるのかわからん。 :

小林誠氏のメカデザインが好きだったりする自分ではあるのだけど。視覚的な情報量が多過ぎて、何が映ってるのかよーわからん。「ちょっと時間が長すぎないか」と思えるほどに、カメラ固定で、比較的時間を取っているカットも混ざってはいるんだけど。それでもわからん。

現実に存在する物体・デザインに関しては、見た目で、はっきりとわからなくても、ある程度頭の中で「これはこういう形のはずだな」と記号化 or 置換しつつ認識してるから混乱しないけど。アニメのメカデザイン等、現実世界になかなか存在しない奇怪なデザインは、脳内に蓄積済みの3D形状を利用した記号化・置換がなされずに、「これは一体どういう形の物体なんだろうな」と、まずはそこから認識することを試行するような状態になってしまうので、混乱してしまうのかもしれん、と思ったり。

などと書いてみたけど。単に、ウチのTV受信状態が悪くて、画面がノイズだらけだから、認識しにくいだけかもしれず。…まあ、ウチの受信状態は横に置いて、妄想を進めるとして。

もしかすると昨今の作品は、メカデザインに関しても「代数読み」的認識を求められるのかもしれん。細部までくっきりはっきりと認識しなくちゃいけない、というわけではないのだろう。が、人間の頭は、よくわからない視覚情報に遭遇した際に、おそらくは危機回避という本能で「これは何だろう」と認識を試みるような印象もあるわけで。その本能を捻じ伏せながら視聴するわけだから、ストレスを感じる予感も。

とかそういうことを考えると。色やシルエットで、しっかりと敵・味方を分けていた昔のロボットアニメって、よく出来てたんだなと。や。敵・味方がよくわからんデザインというのもありだとは思うんだけど。そうなると今度は、カット毎の色彩設計や光源配置がますます重要になってくる。ような気もする。セルを置いていくような、レイヤーのみを意識した画の作り方では、破綻してしまうのではないか。とか。

何を書いてるのかわからん。>自分。

#4 [pc] _MSのUMPC責任者が語る「なぜTablet PCはダメだったのか」:ITpro

「Tablet PCが失敗したのは、最初に出したとき、ユーザーに『どう使えばよいのか分からない』と思わせてしまったことが原因だったと思う」。こう語るのは、マイクロソフト日本法人でUltra-Mobile PC(UMPC)事業を統括している、Windows本部 ビジネスWindows製品部 シニアプロダクトマネージャーの飯島圭一氏だ。

MSのUMPC責任者が語る「なぜTablet PCはダメだったのか」:ITpro より

同社では、個人ユーザーに向けた事業展開は、当面考えていない。

MSのUMPC責任者が語る「なぜTablet PCはダメだったのか」:ITpro より

ふと思ったけど。こういう人達って、絵描きさんの存在をどの程度認知してるんだろう。人数少ないから相手にしても商売にならない、とかそんな感じなのかな。

#5 [pc] _「Winny商法」にご用心:ITpro

その中で最近よく目にするのが,「Winnyの起動を禁止するツール」や「USBストレージへのデータの書き込みを制限するツール」のリリースである。こういったツールの登場を見るたびに,筆者は複雑な気持ちになってしまう。

筆者は,こういったツールが「実際には機能しない」とか「役に立たない」というつもりはない。試してはいないが,これらはきっと確実に動作するだろう。

では,なぜ筆者が複雑な気持ちになってしまうのかというと,そもそも「特定のアプリケーションの実行禁止」や「USBストレージへの書き込み禁止」は,Windowsが標準で備えている機能だからである。

「Winny商法」にご用心:ITpro より

別にいいんじゃないかしら。>Winny商法。勉強する暇・調べる暇が惜しいから、金を払ってお手軽にどうにかする、という話でしかないような。

#6 [zatta] タバコにおまけでついてくるライターは不良品ばかりなのではないか

火打石?のところが回らなくなった。液体はまだたんまり入ってるのに。どうやって処分したらええねん。

_百円ライターよもやま話 :

ところで、カートンで買うたびにライターをくれる近所のタバコ屋。こんな太っ腹なことをしていて大丈夫なのかと他人事ながら心配になるが、店のオバチャンに訊ねてみたところ、ムッとした顔で「キャンペーンの残りもんやからタダなの。心配してくれんでええわよ!」と言われてしまいました。すみません。

百円ライターよもやま話 より

そういう事情があるのか。

ちなみに付けられる景品はタバコの価格の10%以内と法律で決められているそうで。1カートン2800円とすると、おまけは280円以内ということになる。

あのうJT様。タバコの景品にレトルトカレーとかは無理っすかねえ? 魚の缶詰でもいいですので。

百円ライターよもやま話 より

レトルトカレーのほうがまだ嬉しいな。ポテチでもいいや。JTの缶ジュースでもいいです。

_100円ライターってどうすれば :

「お店に置いてきてしまう」という手段が紹介されてる…。パチンコ屋さんあたりだと、場所取り等の「第2の 人生 ライター生」を送る時もあるとか。ほほぅ…。や、パチンコはしてない自分なのでアレだけど。

_福岡県警の警官がコンビニで百円ライター万引き(読売新聞) :

2002年05月03日(金) 10時50分

福岡県警監察官室は3日、同県警西署七隈交番の巡査長(55)が2日夜、福岡市中央区のコンビニエンスストアで、100円ライター2本を万引きしたと発表した。巡査長は「つい魔が差した」と話しており、同県警は窃盗容疑で福岡地検に書類送検する。

福岡県警の警官がコンビニで百円ライター万引き(読売新聞) より

55歳にもなって、何やってんのかなぁ。

さておき。警察署に置いてきたら、喜ばれるだろうか。握力のある人も居るだろうから、「ふんぬっ」と火打石を回して使ってくれそう。

2005/04/07(木) [n年前の日記]

#1 [anime] _仮面ライダー緑

ヤベエ…腹いてえッス…。

#2 [web] _MC.カラテカ

愕然。スゴイ動き。

#3 [anime] _BSアニメ夜話 第3弾 第1夜 「新世紀エヴァンゲリオン」

アレって純文学だったのか…。 *1 _(via うぱーのお茶会:BSアニメ夜話)
*1: 自分、「縦線横線がTVに! アハハ」みたいな見方 ―― 表現や姿勢しか見てなかったので、純文学云々なんて全然気づかなかった。浅いなぁ…。もっとも、「入れ込むと危険」な雰囲気を感じ取って、無意識にそれを避けてた可能性も。

#4 [game] _嶋大輔が「喧嘩番長」でメンチ切る

こんなゲームが企画されてたとは。メンチビームにシビレた。素晴らしい。

#5 [game] _バーチャファイターを創った男達:裕さん伝説「オレを殴ってみろ!」

わ。懐かしい話題だ…。これがホントなら、例えばスト2の開発者は、手足を数メートル伸ばしたり、電気を体から出してたことに。マリオシリーズに関わった宮本茂氏も、開発フロアのあっちでピョーン、こっちでピョーン、そのうえ土管の中に潜ったり…ってソレどんな業界やねん! そこまでいくとさすがに嘘だとわかってしまうわけで、こういうのは、さじ加減が難しいのだろうなぁ。 _(via ものすごくとってもひじょうにすばらしく : 2005/04/07)

_考案した編集者はMMR マガジンミステリー調査班 におけるイケダ隊員(元ベーマガ所属) :

なんとなく思い出した :

「殴ってみろ!」はさすがにアレだとしても。S社初のポリゴンレースゲーでグラフィック担当だった某氏は、車について勉強しなきゃ、とか言ってるうちに、ゴイスなスポーツカーを乗り回すようになったっけ。それまでは、車のくの字も興味が無い人だったのに。あの会社は、何かそういう熱気に満ちているというか、研究熱心な社員に恵まれているようにも思える。それはたしかなことだろうなぁ。…と、このぐらいのさじ加減ならどうだらう。<オイ。 *1

*1: そういう自分も会社は違えど、エフェクトの参考にと、 _『ミラクルガールズ』 の瞬間移動シーンをコマ送りで何度も何度も凝視してたっけなぁ…ってめっちゃインドアなうえにパクリですか。しかも少女向けアニメから。姿勢・心根からして某氏のエピソードとは雲泥の差。 _キッスの途中でもないのに涙がこぼれてしまう。 <その一文を書きたいがためだけにこういう話をしたんか…。

#6 [hns] altavista のイメージ検索を、検索エンジンとして認識させたいのだけど

_こういうURL なんですが。

/lib/HNS/IntelliSearch.pm に加えてみたつもりが、上手くいかず。…そもそも、新しい検索エンジンとして認識すらしてくれないのがよくわからない。log.cgi 中の recent_search_engine() を眺めた。IntelliSearch.pm 内の記述で引っ掛からなかったURLのうち、「%」を含んでるものを新しい検索エンジンのURLとして、配列に push してるらしい。自分が認識させたいURLは英単語のみで検索してるようで、「%」が含まれてない。故に、新しい検索エンジンとして取り扱われないのだな。というかそもそも、その比較に入る前に、検索エンジンとして認識してくれないといかんわけで…。うーん。

#7 [nitijyou] なんだかアクセスが増えたなと思ったら

先日の、 _ファミコンの色数制限の話 が、大手のニュースサイトさんに取り上げられてたみたい。ファミコンって、今も皆から愛されて(?)いるのだな。 *1
*1: 愛されてはいるけど、(自分も含めて)本当のスペックを知る人が少ないらしいのがなんというか。でも、そんなところが、いかにも、一般大衆の間に広く普及した機械っぽい印象も。機械のそういう在りかた・扱われ方 ―― どこか空気のような存在になって、その性能について特に顧みられることもなくなった機械の姿は、個人的には結構好きなのでした。

#8 [cg_tools] blenderで角柱を組み合わせたような形状を作りたいのだけど

押し出しで作ったほうがいいか、サブディバイドで細かくしたcubeから頂点を削除したほうがいいかで悩んでしまったり。どっちがいいんだろうなぁ。

2004/04/07(水) [n年前の日記]

#1 [tv] 昨日のプロジェクトX

書くの忘れてた。みどりの窓口のオンラインシステム開発の話。なかなか興味深い内容。見ていた親父さんが、「国鉄と日立で違う服装してるのがマズイ」とポツリ。なるほど。そういう手もあるか。近年は実践が難しそうではあるけど、当時その技を使わなかったのは不思議。あるいは使ってたけどそこまで再現してなかったか。それはそうと。国鉄の人は判ってるけど、日立の人は未だに判ってないような匂いがしたんだけど気のせいだろうか。…裏話はないのかなと思って検索してみたけど、 _MARS-1の写真 とか、 _新・闘わないプログラマ No.296 しか見つからなかった。

_江端さんのひとりごと「パソコン購入顛末記」 :

「日立」「みどりの窓口」で検索してたら見つけた。秋葉原でPC-UNIXに詳しいお店といえば、一軒しか思い浮かばない。そうか。社長さん *1 は元日立の人で、さらに「みどりの窓口」開発とも関係があったと。そういえば社名も鉄道に関係してる単語だな。と思ったが _そういうわけでもない らしい。残念<何が?。

*1: ひょっとすると、今現在は会長さんなのだろうか。

#2 [seiji] _小泉首相靖国参拝は違憲 「宗教的活動」と福岡地裁

戦犯を分祀しておけば裁判にもならなかっただろうに。生きてる人間の行いのせいで、自分達が死んだ後もトラブルの元になってるとは、祭られてる(?)人達は夢にも思ってないだろな。

#3 [seiji] _誓いの言葉

だよなぁ。まあ、学校なんてものは立場の弱い人間に対してとかく強制するのが当たり前の世界だから、中の上の人もおかしくなってるのだろうな。

2003/04/07(月) [n年前の日記]

#1 フィギュア専門店

買い物に出かけたついでに近所のリサイクルショップを覗いたら完全にフィギュア専門店になっていて驚いた。こんな田舎でそんなベクトルの商売を試みるとはなんと破天荒な店主。とはいえなんとなくだけどそれこそが正解のような気も。広く浅くでは価格も品揃えも大手・郊外店に太刀打ちできない。大手ではカバーしきれないジャンルについて狭く深くディープにコアにでもやらなければ個人経営の商店なぞたちまち大手に潰される。「○○ならあの店」等の高い評価を得てしっかり確実に生き残ってほしい、と思う。ちなみにネットで検索してみたら _件の店のサイト を発見。円谷英二の出身地で特撮関係フィギュア店は商売として成り立つか。成り立って欲しい。

2002/04/07() [n年前の日記]

#1 エンコ

エンコ中 _(以下略)

#2 [capture] 30fpsなのか?

最近のデジタル仕上げアニメは30fpsなんでしょうか。
「遥かなる〜」のOPをDVDからリッピングしてみたのです。
動きが30fpsの上に、インターレス解除しなくても絵が正常だ…
これでいいのか? 何か自分が間違えてないか? うーん…


おねティをキャプチャ。
VirtualDubではフレームドロップする。
CaptureLightならドロップしないんです。なぜだろう。

未だに、BT8x8tweakってどうやるのかわからない。
というか、どんなイイコトがあるのかすらわからない (;´Д`) ダメジャン

やっぱり時間かかるなぁ (;´Д`) >エンコード
3DNRだけでなんとかなるかなと思ったけど甘かった。やっぱり色ムラが残る。
waveletNR使わないとダメみたい。
huffyuvのaviが出来るまでに、予想時間が6〜8時間。かかりすぎ。

インターレース解除の段階で、もうダメなんだよな…
フレーム毎に横方向に微妙にゆらゆらしてる…

テープの質が悪すぎるんだろうか。
S-VHSテープをVHS標準として使えば状況は変わるかな。
再生デッキのヘッドがもうダメなのかも。静電ノイズも出てるし。
BT8x8、YUY2特有の問題ってことはないだろうか。
でもこれじゃないと転送量と処理速度が…うーん…

2001/04/07() [n年前の日記]

#1 フリクラ

弟が持ってきたフリクリ最終話のDVDを見せてもらいましたです。
ジャパニメーションってスゴイ。感動。

弟が仙台にすぐ帰るとのことで、お互いそれ系のデータを一日中CD-Rに焼き焼き。
プレクスターのCD-Rドライブでの吸出し、あっという間に終了。素晴らしすぎる。
…オイラの使ってるドライブがヘボ過ぎるだけという話も(爆)

以前、弟からバックアップ作業を頼まれ、手元に置いてあったのですが>X68K
本体は持ち帰るけど、モニタは置いてくことに。
手持ちのPC-9821As3用モニタとして使えれば嬉しいんだけど。
弟の手元にケーブルがあるらしいので、実験はソレ待ちであります。

2000/04/07(金) [n年前の日記]

#1 (NoTitle)Memtest86という、メ...

_Memtest86 という、メモリをみっちりねっちり調べるプログラムで、サブマシンのメモリに異常がないか調べました。
最近の不調の原因は、実はメモリにあるのではないかと睨んだからなのですが。
しかし、異常は見つからず。
本来ならホッと一安心のはずですが、どうもそういう精神状態にもなれず。
結局、不具合の原因はわからないわけですから…
それにしても、このMemtest86、中々いいです。時間はかなりかかるものの、テストする様子を見ているだけで、如何にネチネチとメモリを調べているかがわかります。
にしても…不具合の原因は、一体どこにあるのだろう。

「メモリテスト? 電源入れるとメモリカウントしてチェックしてくれるやん」と、疑問に思う方もいらっしゃると思うのですが。
一応、 _こういう例 もあるみたいです。

自己フォロー > 「おにいさまへ」
「運河へ捨ててやる」じゃなくて「運河の底に沈めてやる」でした。
こういうセリフ、オイラにはちょっと思いつきません。
ステキ〜(はぁと) <スーパーミルクちゃんのイメージで

1999/04/07(水) [n年前の日記]

#1 (NoTitle)駅前の郵便局へ自転車...

駅前の郵便局へ自転車で。G氏、遅くなってスマンです。やっと送ったのでよろしく。
ついでに足を伸ばして駅から遠く離れた商店街へ。
中古ファミコンショップで偶然「センチメンタル」発見。サターン版。980円ナリ。GETだぜ。
色んな評判は聞くので、楽しみといえば楽しみ。

家に帰ったら、妹が家族団欒用TVで「アンジェリークRPG」をプレイ中。
ちょっと、君……ソレ、いったい何回目のプレイなの? …そんなに面白いのか…?

TurboLinuxをインストールしようとするが、X windows の設定(turboxcfg)で
ビデオボードの設定で必ず失敗する。
くうぅ、やはり最新ビデオボードじゃダメなのか。どんなにひどくても640x480x8bitぐらいなら
いけるんじゃないかと勝手に思ってたけど…。ということで、敗北。
…いっそのこと、PC-9821の方にBSD導入とかしたほうがまだいいのかもしんないや。
ああ、でもあっちはHDD容量が無くてぇ…。トホ。

以上、26 日分です。

過去ログ表示

Prev - 2024/04 -
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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project