MacBook AIr」カテゴリーアーカイブ

AVIF

Web 用途の画像形式で近年は WebP が人気、筆者も blog で使っている。
文字列に弱い JPEG とサイズが大きめな PNG という欠点を補っています。
更に透過やアニメーションや可逆圧縮まで対応と至れり尽くせり。

でも広まらないと意味が無い、HEIF はもう死んでいる。
そういえば JPEG 2000 とかそんなのあったよなって、他は忘れた。
とはいえ既に結構広まっていますのでこのまま安泰かも。

ところで、似たようなフォーマットに avif という形式があるらしい。
特徴までそっくりで WebP より更にサイズが小さくなるらしい。

AVIFとは?特徴や注意点から変換できるアプリ・ツールまで紹介

AV1 動画と同じ圧縮を画像に展開したもののようです。
とりあえず上記からのリンク先にある avif ファイルで試す。

gnome

GNOME

macos

macOS

macOS スゲェ、すべて Preview.app で普通に表示できるし。
でも avif への変換はできない、これは WebP と同じ。
avif はオープンソースですし GNOME も対応は時間の問題かな。

hex

バイナリを見ると見事に ftypavif の mp4 コンテナですね。
そういえば HEIF もそうだし WebP も RIFF のコンテナだったね。
ということは。

mpv -autofit 400x300 photo.avif

mpv

mpv で普通に開くことができました、当然 WebP も同様に。
totem ではエラー、Quick Time はそもそも受け付けない。

次世代画像形式のWebP、そしてAVIFへ。変わり続ける技術に対応するweb制作の黄金解 – ICS MEDIA

こんなページも見つけた、JPEG XR なんて知らないぞ?
あぁ Windows 専用なのか、7 以降の Windows はマジで知らないし。
てか WebP って ffmpeg で変換できるのか、もしかして今なら。

ffmpeg -i gara.webp gara.avif

ffmpeg

おいおい、できるじゃないか。
これは新たな生き残りゲームが始まる予感。

でも写真は Exif の関係で今後も jpeg のままだろうし。
今は GIF や PNG を選んでいた所を WebP に置き換えが最適解かな。
知らんけど。

NSImage: WebP and HEIF

前回 Fedora での WebP 変換について書いたんですけど。
WebP を使いたい層は Web デザイナ、つまり macOS ユーザーが大半かと。
アプリも色々出ているけどオートメーションでサクッと変換できればなって。
ところで NSImage って WebP を扱えるのかな?

#!/usr/bin/env python3

from AppKit import *

RECT = ((0, 0), (400, 300))

class MyView(NSView):
    def initWithFrame_(self, rect):
        objc.super(MyView, self).initWithFrame_(RECT)
        return self

    def drawRect_(self, rect):
        # WebP or HEIF
        image = NSImage.alloc().initWithContentsOfFile_('gara.webp')
        #image = NSImage.alloc().initWithContentsOfFile_('panaleica.heic')
        image.drawInRect_(RECT)

class MyWindow(NSWindow):
    def init(self):
        objc.super(MyWindow, self).initWithContentRect_styleMask_backing_defer_(
            RECT,
            NSTitledWindowMask | NSClosableWindowMask |
            NSResizableWindowMask | NSMiniaturizableWindowMask,
            NSBackingStoreBuffered, False)
        self.setTitle_('WebP Test')
        self.setDelegate_(self)
        # MyView
        self.canvas = MyView.alloc().initWithFrame_(RECT)
        self.contentView().addSubview_(self.canvas)
        #
        return self

class AppDelegate(NSObject):
    def applicationDidFinishLaunching_(self, notification):
        self.mywindow = MyWindow.new().autorelease()
        self.mywindow.makeKeyAndOrderFront_(self.mywindow)

class AppMenu(NSMenu):
    def init(self):
        objc.super(AppMenu, self).init()
        item_app  = NSMenuItem.new()
        self.addItem_(item_app)
        menu_app = NSMenu.new()
        item_app.setSubmenu_(menu_app)
        # quit menu
        item_quit = NSMenuItem.new()
        item_quit.initWithTitle_action_keyEquivalent_('Quit App', 'terminate:', 'q')
        menu_app.addItem_(item_quit)
        return self

pool = NSAutoreleasePool.new()

NSApplication.sharedApplication()
NSApp.setMainMenu_(AppMenu.new())
NSApp.setDelegate_(AppDelegate.new())
NSApp.activateIgnoringOtherApps_(True)
NSApp.run()

del pool

PyObjC でごめん。

mac webp

普通に扱えるんですね、HEIF(heic) 画像でも問題なく。
後はコレを変換だ、と思ったんですけど。

NSBitmapImageFileType | Apple Developer Documentation

NSBitmapImageFileTypeWEBP なんて定義は無いんですね。
HEIF も無い、検索で簡単に見つかる手段は使えないか。
もう少し調べます。

Histogram

今日は久々の快晴、野鳥撮影日和だ!
だからといって野鳥が都合よく出てきてくれるはずもなく。
ブログに貼れるような野鳥写真は撮れませんでした。

ところでカメラや現像アプリに付いているヒストグラム。
これっていったい何に使うんだろう?
プロの人は「おいおい。。。」だろうけど一般人はそんなだよね。
どうやら扇形にするのが理想らしい。

01

ということで試してみた、いや頑張ってみた。
iFinish を弱にして shadow を少し明るくして etc…

nadeshiko

しぶとく生き残っているセキチク(ナデシコ)で。
たしかにバランスはいいね、オリンパスらしくないような気も。

02

やっぱりこれです、青が一部ドカーンと。
過去画像も iFinish だとこんな感じが結構多かったり。

nadeshiko

でも現像するとそんなに青くない、よく解らない。
そもそも撮影時になるべく扇形になるように写せばいいんだよなって。
白トビや黒ツブレも撮影前にヒストグラムで解るし今後は活用しよう。

ついでに、macOS のスクリーンショットで今頃知ったんだけど。
外部出力のディスプレイ上で行うと 72dpi になるんだね。
(HiDPI) マークのサイズだと Retina ディスプレイ同様 144dpi に。

72dpi

つまり外部ディスプレイでスクリーンショットすれば dpi 変更無しでイケる。
と思って試したらフォントのアンチエイリアスが消えて余計汚くなるやん。
上記設定画面がソレをやった例です、ほんと何でこんな仕様なんだか。

更に command+shift+3 すると両方のスクリーンショットが生成される。
これ不便だからアクティブな画面だけにしてくれないかなぁ。

macOS 13 Ventura @ OLYMPUS and LUMIX

macOS 13 Ventura にして以降 LUMIX G99 からの RAW 転送が異様に遅い。
G99 の設定を変えたり USB ケーブルを変えたり色々やったけど無駄だった。
つい最近 Ventura では exFAT で不具合が出ると知ったのでコレっぽい。

macOS 13.1 Venturaでもシステム設定アプリのメモリリークやexFAT、ハブ経由のディスプレイ問題などの不具合は修正されていないので注意を。

アップデートしてみましたはい、変わっていませんでした。
たださ、OLYMPUS E-M5 mark3 のほうは何も問題ないんだよね。

exfat

E-M5 を USB 接続して確認、exFAT ですね。
サムネイルも一瞬だし転送も普通、だから LUMIX のほうが原因だと思っていた。
ちなみに SD CARD はどちらも SanDisk の 64GB を使っています。
機種で症状が違うし exFAT 全体ではなくドライバーの相性問題っぽいですね。

これはもしや OM SYSTEM に完全移行しろ OM-1 買えってことなのか?
いやまて、こんなのを見つけたぞ。

ダイナミックな鳥の姿を捉える!OM-D E-M1 Mark II 野鳥撮影レポート 3|OM SYSTEM MEMBERS|OMデジタルソリューションズ

オールターゲットか、一点オートフォーカスに限界は感じていたし。
中抜け対策にこんな方法が、G99 は何も対策機能が無いもんな。
プロキャプチャも使いたい、4K Photo は画質がイマイチだったし。
E-M5 mark3 でもこの機能は全部使える。

そんなこんなで、しばらくは E-M5 mark3 一本でいくことに。
イケるようなら中古が安い E-M1 mark2 を、鳥認識いらないかも。
いや E-M5 に後付けグリップで PEN を買うという手も、まだ解らんけど。
G99 は macOS がなんとかなるまで封印、遅すぎてやってられない。
ということで。

aogera

アオゲラ、赤いじゃないか!って筆者も思ったってばさ。
月曜日に撮影したものだけどさ、G99 最後の写真になるかも。

Sublime Text 4 Custom 2

Sublime Text プラグインについて日本語の解りやすいトコ無いなぁ。
試してみたら Packages/*/ 以下にある *.py は全部勝手に読み込むや。
つまり自作するならコレでいい、ディレクトリ名は何でもいい。

plugins

ショートカットで実行するには sublime-keymap に書き込む。
配布するなら個別ディレクトリにして OS 別キー割り当てが可能らしい。

Hoge/
- Default (Linux).sublime-keymap
- Default (OSX).sublime-keymap
- Default (Windows).sublime-keymap
- hoge.py

command(super) と Ctrl を変えるだけなんだろうけどね。

スニペットファイルは User 以下に置く。
PHP に定義は text.html.php でイケた。

<snippet>
    <content><![CDATA[
<pre class="brush: ${1:py}">$0</pre>
]]></content>
    <tabTrigger>prep</tabTrigger>
    <scope>text.html.php</scope>
</snippet>

ファイル名はなんでも良くて sublime-snippet の拡張子を付ける。
一つにつき一ファイルにしないと読み込みしてくれないようです。

トリガーで流し込むスニペットはこうやってファイルを作る。
ショートカットで流し込むスニペットは sublime-keymap に直接書く。

key

Default (OSX).sublime-keymap は上記メニューで勝手に作られる。
ちなみに一番上のメニューから Packages ディレクトリは開ける。

[
    { "keys": ["f5"], "command": "build" },
    { "keys": ["alt+up"], "command": "swap_line_up" },
    { "keys": ["alt+down"], "command": "swap_line_down" },
    { "keys": ["super+alt+down"], "command": "duplicate_line" },
    // My Plugin
    { "keys": ["super+ctrl+t"], "command": "open_terminal" },
    { "keys": ["super+ctrl+e"], "command": "html_escape" },
    // My Snippets
    {
        "keys": ["super+ctrl+]"],
        "command": "insert_snippet",
        "args": {"contents": "<br />"}
    },
    {
        "keys": ["super+ctrl+r"],
        "command": "insert_snippet",
        "args": {"contents": "<span style=\"color: ${1:red}\">$TM_SELECTED_TEXT</span>$0"}
    }
]

スニペットは変数も使えます。
記法も Gedit や Atom と同じだから迷うことは無いでしょう。

最後にキー割り当てはなるべくデフォルトのまま、ということに。
command+n が新規タブなのは受け入れることにします。
Gedit が Ctrl+T だという理由で command+t に変えていたんだけど。
Atom のデフォルトもそうだったし慣れておかないと後で困りそうなので。

同じ理由で command+h を置換に割り当てるのもヤメに。
command+option+f のほうが直感的なんだけど Gedit での手癖が。
command+h はどう考えても非表示でないとおかしい、手癖より統一を。
どうしても譲れない 4 つだけは変更させていただきます。

ということでアッサリ乗り換え作業が終わりました。
Sublime Text ってこんなに凄かったのか、知らなかった。

buy

ということで購入、$70 じゃなくて $99 だった。
こんな素晴らしいアプリを作ってくれた感謝を込めて。