筆者は Fedora と Mac を併用しています。
写真関連は現在全部 Mac でやっている。
そして思う、Eye of GNOME(eog) を Mac で使いたい。
大量画像の Exif 情報をサクッと確認したくなる場合が多い。
eog は左右矢印キーでディレクトリ内を巡回できるのがいい。
Finder のギャラリー表示はなんかもどかしくて。
Photo management | Paepoi Blog
Mac にインスト、、、、、いや Gedit でやって劇遅だったじゃん。
だから Atom を Gedit 風にカスタムして使っているのだし。
コレも似たようなビューアを探す?いやどうせなら自分で作ろうかなって。
カスタムするくらいなら最初から自分好みに作ったほうがいいので。
まて、その前に RAW 画像を NSImage は表示できるのか?
ということで試してみた。
#!/usr/bin/env python3
from AppKit import *
PATH = 'P1012925.RW2' # LUMIX(Panasonic) RAW image
RECT = NSMakeRect(0, 0, 600, 400)
wins = []
class RawView(NSView):
def initWithFrame_(self, rect):
objc.super(RawView, self).initWithFrame_(RECT)
self.image = NSImage.alloc().initWithContentsOfFile_(PATH)
return self
def drawRect_(self, rect):
NSColor.blackColor().set()
NSRectFill(rect)
aw = rect.size.width
ah = rect.size.height
w = self.image.size().width
h = self.image.size().height
if w - h > 0:
if aw * h > ah * w:
width = w * ah / h
height = ah
x = (aw - width) / 2
y = 0
else:
width = aw
height = h * aw / w
x = 0
y = (ah - height) / 2
r1 = NSMakeRect(x, y, width, height)
self.image.drawInRect_(r1)
class MyWindow(NSWindow):
def init(self):
objc.super(MyWindow, self).initWithContentRect_styleMask_backing_defer_(
RECT,
NSTitledWindowMask | NSClosableWindowMask |
NSResizableWindowMask | NSMiniaturizableWindowMask,
NSBackingStoreBuffered, False)
# NSView
view = RawView.alloc().initWithFrame_(RECT)
self.contentView().addSubview_(view)
# self
self.setTitle_('RAW image Viewer')
return self
class AppDelegate(NSObject):
def applicationDidFinishLaunching_(self, notification):
window = MyWindow.new()
window.makeKeyAndOrderFront_(window)
# save
wins.append(window)
# Activate
NSApp.activateIgnoringOtherApps_(True)
class AppMenu(NSMenu):
def init(self):
objc.super(AppMenu, self).init()
item_app = NSMenuItem.new().autorelease()
self.addItem_(item_app)
menu_app = NSMenu.new().autorelease()
item_app.setSubmenu_(menu_app)
# quit menu
item_quit = NSMenuItem.new().autorelease()
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().autorelease())
NSApp.setDelegate_(AppDelegate.new().autorelease())
NSApp.run()
普通に表示できるじゃん。
macOS が対応している RAW は全部表示できると思う。
RAW 対応は「システムレポート」で見ることができる。
EXIF は以下の方法で RAW でも取得できるようだ。
これは思ったより簡単に作れそうだぞ。
GTK4 もやらなきゃだけど今はこっちをやりたいかな。

