筆者は 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 もやらなきゃだけど今はこっちをやりたいかな。