前回 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 でごめん。
普通に扱えるんですね、HEIF(heic) 画像でも問題なく。
後はコレを変換だ、と思ったんですけど。
NSBitmapImageFileType | Apple Developer Documentation
NSBitmapImageFileTypeWEBP なんて定義は無いんですね。
HEIF も無い、検索で簡単に見つかる手段は使えないか。
もう少し調べます。
