GIF

アニメーション画像

アニメーション画像
(各種WEBサービスを利用しない場合)
A:gif
B:APNG (Animated png)
C:Animated webp
D:Movie
E:マルチページPNG



ツール類
A:gif
[bash]gifskiインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-724851.html
デスクトップアプリ版
https://github.com/sindresorhus/Gifski?tab=readme-ov-file#download
AppStore版
https://apps.apple.com/us/app/gifski/id1351639930?mt=12


B:APNG (Animated png)
デスクトップ版
https://github.com/shgodoroja/APNGb



C:Animated webp
[applescript]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-0a1a86.html
[bash]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-84a951.html


D:Movie
Shutter Encoderからffmpegの取り出し
https://quicktimer.cocolog-nifty.com/icefloe/2024/02/post-61c3e2.html
[AppleScript]ffmpegインストール(野良)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-1ce12f.html
[Bash]ffmpegインストール
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-c0e627.html


E:マルチページPNG
[Combined Merged PNG]マルチレイヤ構造のPNG画像を個別のファイルにする
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-bf44c9.html
[Combined Merged PNG]マルチレイヤ構造のPNG画像をGIFアニメに変換する(簡易版)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-89705d.html


処理

1:Image to GIf
[gifski]イメージシーケンスをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-2ba1ab.html
2:Image to apng
APNGbデスクトップ版
https://github.com/shgodoroja/APNGb
3:Image to webp
[img2webp]アニメーションwebpの作成
https://quicktimer.cocolog-nifty.com/icefloe/2022/12/post-aa3e08.html
4:Image to movie
[QuickTime]イメージシーケンス(複数画像)からムービーを作成する
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-383ed1.html



A:gif
1:GIF to Image
[Gif]gifアニメーションの各コマを別ファイルに保存(イメージシーケンス保存)
https://quicktimer.cocolog-nifty.com/icefloe/2023/05/post-4c0c6b.html
2:GIF to Movie
[ffmpeg] GIFアニメーションをmp4に変換する
https://quicktimer.cocolog-nifty.com/icefloe/2023/10/post-154f42.html
3:GIF to webp
[gif2webp]GIFアニメをwebpに変換する
https://quicktimer.cocolog-nifty.com/icefloe/2022/12/post-c8af28.html


B:APNG (Animated png)
1:apng to movie
2:apng to image


C:Animated webp
1:webp to image
[webpmux] アニメーションWEBPファイルから各フレームイメージを書き出す(差分イメージ)
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-0643c2.html
[anim_dump] アニメーションWEBPファイルから各フレームイメージを書き出す(フレームイメージ)
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-ccfea9.html
2:webp to Movie
イメージシーケンスを書き出して[LINK]から イメージシーケンスをムービーに変換
3:webp to Gif
イメージシーケンスを書き出して[LINK]から GIFにする


D:Movie
1:Movie to Image
[ffmpeg]ムービーファイルをイメージシーケンス画像にする
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-176cb7.html
2:Movie to Gif
[ffmpeg]ムービーファイルをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/11/post-a1c3d2.html
[gifski]ムービーファイルをGIFにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-555b0a.html
[gifski]デスクトップアプリ版
https://github.com/sindresorhus/Gifski?tab=readme-ov-file#download
3:Movie to webp
3−1:ムービーフレームをイメージシーケンス画像に書き出してから img2webpで変換
3−2:ムービーファイルをgifski等でGIFアニメにしてから gif2webp
3−3:ffmpegで変換
[ffmpeg]ムービーファイルをアニメーションwebpにする
https://quicktimer.cocolog-nifty.com/icefloe/2023/12/post-3519c3.html

|

[Combined Merged PNG]マルチレイヤ構造のPNG画像を個別のファイルにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
error number -128
com.cocolog-nifty.quicktimer.icefloe
*)
#
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

##########################
## ダイアログ
##########################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias

#set listChooseFileUTI to {"com.compuserve.gif"} as list
set listChooseFileUTI to {"public.png"} as list
set strPromptText to "ファイルを選んでください" as text
set strPromptMes to "ファイルを選んでください" as text
set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
##########################
## パス
##########################

set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
###作成するフォルダ名
set ocidFileName to ocidFilePathURL's lastPathComponent()
set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
set strSaveDirName to (strBaseFileName & "_Image Sequence") as text
####コンテナディレクトリ
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
###保存用ディレクトリ
set ocidSaveFileDirURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strSaveDirName)
###フォルダを作る
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveFileDirURL) withIntermediateDirectories:true attributes:(missing value) |error|:(reference)

##########################
## 画像読み込み
##########################
set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
set ocidGifImageArray to ocidGifImage's representations()
set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
##########################
###保存時必要になるPNGオプション
##########################
####NSImageColorSyncProfileData
set ocidColorSpace to refMe's NSColorSpace's displayP3ColorSpace()
set ocidColorSpaceData to ocidColorSpace's colorSyncProfile()
####NSImageEXIFData
set ocidEXIFData to (ocidGifImageRep's valueForProperty:(refMe's NSImageEXIFData))
####ガンマ値換算 まぁ2.2入れておけば間違い無いか…しらんけど
set numGamma to (1 / 2.2) as number
####propertiesデータレコード整形(PNG用)
set ocidImageProperties to {NSImageGamma:(numGamma), NSImageEXIFData:(ocidEXIFData), NSImageInterlaced:false, NSImageColorSyncProfileData:(ocidColorSpaceData)} as record

####GIFのコマ数 フレーム数
set ocidFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount))
##駒数がmissingValue = 1フレームのみの場合
if ocidFrameCnt = (missing value) then
  set numFrameCnt to 1 as integer
else
  set numFrameCnt to ocidFrameCnt as integer
end if
### フレーム取り出し用のカウンタ
set numSetFrameNo to 0 as integer
###
repeat numFrameCnt times
  ####フレーム番号 コマ番号 をセット
ocidGifImageRep's setProperty:(refMe's NSImageCurrentFrame) withValue:(numSetFrameNo)
  ###確認用
  ## set ocidFlameRep to (ocidGifImageRep's valueForProperty:(refMe's NSImageCurrentFrame)) as integer
  ## log ocidFlameRep
  #####保存用ファイル名 連番ゼロパディング
  set strZeroSup to "000" as text
  set strZeroSup to (strZeroSup & ((numSetFrameNo + 1) as text)) as text
  set strZeroSup to (text -3 through -1 of strZeroSup) as text
  set strSaveFileName to (strBaseFileName & "." & strZeroSup & ".png") as text
  ###保存用のパスURL
  set ocidSaveFilePathURL to (ocidSaveFileDirURL's URLByAppendingPathComponent:(strSaveFileName))
  ###PNGデータに変換
  set ocidSaveData to (ocidGifImageRep's representationUsingType:(refMe's NSBitmapImageFileTypePNG) |properties|:(ocidImageProperties))
  ###保存
  set ocidWroteToFileDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference))
  ###カウントアップ
  set numSetFrameNo to numSetFrameNo + 1 as integer
end repeat

###保存フォルダを選択して終了
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
appSharedWorkspace's selectFile:(ocidSaveFileDirURL's |path|()) inFileViewerRootedAtPath:"/"



|

[Combined Merged PNG]マルチレイヤ構造のPNG画像をGIFアニメに変換する(簡易版)

カラーテーブルの処理だけやりかたわからなかったのでテーブル自動です

【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(*
error number -128
com.cocolog-nifty.quicktimer.icefloe
*)
#
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application

##########################
## ダイアログ
##########################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias

#set listChooseFileUTI to {"com.compuserve.gif"} as list
set listChooseFileUTI to {"public.png"} as list
set strPromptText to "ファイルを選んでください" as text
set strPromptMes to "ファイルを選んでください" as text
set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
##########################
## パス
##########################

set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
set ocidFileName to ocidFilePathURL's lastPathComponent()
set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()

##########################
## 画像読み込み
##########################
set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
set ocidGifImageArray to ocidGifImage's representations()
#フレーム数取得のためImageRepを取得
set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
#####フレーム数を取得
set ocidFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount))
##保存ファイル名
set strSaveFileName to (strBaseFileName & "_F" & ocidFrameCnt & ".gif") as text
###保存用のパスURL
set ocidSaveFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:(strSaveFileName))
###GIFプロパティ
set ocidPropertiesDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
#最初のフレームから表示
ocidPropertiesDict's setValue:(0) forKey:(refMe's NSImageCurrentFrame)
#秒8コマ
ocidPropertiesDict's setValue:(0.125) forKey:(refMe's NSImageCurrentFrameDuration)
#フレーム数
ocidPropertiesDict's setValue:(ocidFrameCnt) forKey:(refMe's NSImageFrameCount)
#透過
ocidPropertiesDict's setValue:(true) forKey:(refMe's NSImageDitherTransparency)
#ループ
ocidPropertiesDict's setValue:(0) forKey:(refMe's NSImageLoopCount)
#カラーテーブル
ocidPropertiesDict's setValue:(missing value) forKey:(refMe's NSImageRGBColorTable)
###GIFデータに変換
set ocidSaveData to (refMe's NSBitmapImageRep's representationOfImageRepsInArray:(ocidGifImageArray) usingType:(refMe's NSBitmapImageFileTypeGIF) |properties|:(ocidPropertiesDict))
###保存
set listDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0 |error|:(reference))

###保存フォルダを選択して終了
set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
appSharedWorkspace's selectFile:(ocidContainerDirPathURL's |path|()) inFileViewerRootedAtPath:"/"



|

[com.sindresorhus.Gifski]GifSkiのテンポラリディレクトリを開く(Gifファイルの保存先)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions
property refMe : a reference to current application

###テンポラリファイルの保存先
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
set ocidTempDirPathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Containers/com.sindresorhus.Gifski/Data/tmp/TemporaryItems")
###ピクチャーフォルダにブックマーク(エイリアス)を作ります
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSPicturesDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidPicturesDirPathURL to ocidURLsArray's firstObject()
set ocidBookMarkPathURL to ocidPicturesDirPathURL's URLByAppendingPathComponent:("GifskiTemp")
##ブックマークデータを取得
set listDone to (ocidTempDirPathURL's bookmarkDataWithOptions:(refMe's NSURLBookmarkCreationSuitableForBookmarkFile) includingResourceValuesForKeys:{refMe's NSURLCustomIconKey} relativeToURL:(missing value) |error|:(reference))
set ocdiBookMarkData to (item 1 of listDone)
###リンク作成
set listResults to (refMe's NSURL's writeBookmarkData:(ocdiBookMarkData) toURL:(ocidBookMarkPathURL) options:(refMe's NSURLBookmarkCreationSuitableForBookmarkFile) |error|:(reference))
log item 1 of listResults
###
##保存先を開く
set appShardWorkspace to refMe's NSWorkspace's sharedWorkspace()

set boolResults to appShardWorkspace's activateFileViewerSelectingURLs:({ocidBookMarkPathURL})
set aliasSaveDirPath to (ocidBookMarkPathURL's absoluteURL()) as alias

tell application "Finder"
  #make new Finder window to aliasSaveDirPath
activate
end tell



|

[bash]gifskiインストール


#!/bin/bash
#com.cocolog-nifty.quicktimer.icefloe
#ユーザード $HOME/binにインストールする
########################################
### 設定項目
STR_URL="https://github.com/ImageOptim/gifski/releases/download/1.13.0/gifski-1.13.0.tar.xz"

########################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザーは:$USER_WHOAMI"
###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー:$CONSOLE_USER"
###ログイン名ユーザー名※Visual Studio Codeの出力パネルではrootになる設定がある
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名:$LOGIN_NAME"
###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名:$USER_NAME"
###SUDOUSER
/bin/echo "SUDO_USER: $SUDO_USER"
########################################
##OS
PLIST_PATH="/System/Library/CoreServices/SystemVersion.plist"
STR_OS_VER=$(/usr/bin/defaults read "$PLIST_PATH" ProductVersion)
/bin/echo "OS VERSION :" "$STR_OS_VER"
STR_MAJOR_VERSION="${STR_OS_VER%%.*}"
/bin/echo "STR_MAJOR_VERSION :" "$STR_MAJOR_VERSION"
STR_MINOR_VERSION="${STR_OS_VER#*.}"
/bin/echo "STR_MINOR_VERSION :" "$STR_MINOR_VERSION"
########################################
###ダウンロード起動時に削除する項目
USER_TEMP_DIR=$(/usr/bin/mktemp -d)
/bin/echo "起動時に削除されるディレクトリ:" "$USER_TEMP_DIR"
########################################
##デバイス
#起動ディスクの名前を取得する
/bin/mkdir -p "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID"
/usr/bin/touch "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist"
/usr/sbin/chown -R "$CONSOLE_USER" "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID"
/bin/chmod 700 "/Users/$CONSOLE_USER/Documents/Apple"
/usr/sbin/diskutil info -plist / >"/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist"
STARTUPDISK_NAME=$(/usr/bin/defaults read "/Users/$CONSOLE_USER/Documents/Apple/IOPlatformUUID/diskutil.plist" VolumeName)
/bin/echo "ボリューム名:" "$STARTUPDISK_NAME"

############################################################
############################################################
###ダウンロードSTR_URL_FFMPEG
DL_FILE_NAME="GIFSKI.tar.xz"
if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --connect-timeout 20; then
/bin/echo "ファイルのダウンロードに失敗しました HTTP1.1で再トライします"
  if ! /usr/bin/curl -L -o "$USER_TEMP_DIR/$DL_FILE_NAME" "$STR_URL" --http1.1 --connect-timeout 20; then
/bin/echo "ファイルのダウンロードに失敗しました"
exit 1
  fi
fi
###BIN
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/"
for ((numTimes = 1; numTimes <= 3; numTimes++)); do
sleep 1
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/gifski"
/usr/bin/touch "/Users/$CONSOLE_USER/bin/gifski"
/usr/sbin/chown "$CONSOLE_USER" "/Users/$CONSOLE_USER/bin/gifski"
/bin/chmod 700 "/Users/$CONSOLE_USER/bin/gifski"
done

###旧バージョンをゴミ箱に
USER_TRASH_DIR=$(/usr/bin/mktemp -d "$HOME/.Trash/GIFSKI.XXXXXXXX")
/bin/mv "/Users/$CONSOLE_USER/bin/gifski" "$USER_TRASH_DIR"

###BIN
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/"
for ((numTimes = 1; numTimes <= 3; numTimes++)); do
sleep 1
/bin/mkdir -p "/Users/$CONSOLE_USER/bin/gifski"
/usr/bin/touch "/Users/$CONSOLE_USER/bin/gifski"
/usr/sbin/chown "$CONSOLE_USER" "/Users/$CONSOLE_USER/bin/gifski"
/bin/chmod 700 "/Users/$CONSOLE_USER/bin/gifski"
done
##解凍
/usr/bin/bsdtar -xJf "$USER_TEMP_DIR/$DL_FILE_NAME" -C "/Users/$CONSOLE_USER/bin/gifski"
##シンボリックリンクつけて
/bin/ln -s "/Users/$CONSOLE_USER/bin/gifski/mac/gifski" "/Users/$CONSOLE_USER/bin/gifski/gifski"
##保存先を開く
/usr/bin/open "/Users/$CONSOLE_USER/bin/gifski"

exit 0


|

[gifski]イメージシーケンスをGIFにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# ###FFMPEGのインストールが別途必要です
# https://ffmpeg.org/
# ###gifskiのインストールが別途必要です
# https://github.com/ImageOptim/gifski
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AVFoundation"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
##############################
###設定項目
###FFMPEGのパス
###通常はこちらかな?
# set strBinPath to ("/usr/local/bin/ffmpeg") as text
set strBinPath to ("$HOME/bin/ffmpeg.6/ffmpeg") as text

###gifskiのパス
set strGifskiBinPath to ("$HOME/bin/gifski/gifski") as text

###仕上がり縦横サイズ
set strWpx to ("360") as text
set strHpx to ("360") as text
### 1-100
set strQuality to ("70") as text
###FPS
set strFPS to ("16") as text

#############################
###ダイアログ
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
############
set strMes to "イメージシーケンスの入っているフォルダを選んでください" as text
set strPrompt to "イメージシーケンスの入っているフォルダを選んでください" as text
try
  set aliasResponse to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation with invisibles and showing package contents without multiple selections allowed) as alias
on error
log "エラーしました"
return "エラーしました"
end try
###
set strDirPath to (POSIX path of aliasResponse) as text
set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:false)
set strFileName to (ocidDirPathURL's lastPathComponent()) as text
set ocidContainerDirPathURL to ocidDirPathURL's URLByDeletingLastPathComponent()
set strGifFileName to (strFileName & ".gif")
set ocidSaveGifFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:(strGifFileName)
##
set strDirPath to (ocidDirPathURL's |path|()) as text
set strGifFilePath to (ocidSaveGifFilePathURL's |path|()) as text
delay 3
##
##
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps " & strFPS & " --width " & strWpx & " --height " & strHpx & " --quality " & strQuality & " *") as text

do shell script strCommandText


return

##FPS指定
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 *") as text
##サイズ指定
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 --width 360 --height 360 *") as text
##クオリティ指定 1−100
set strCommandText to ("pushd \"" & strDirPath & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" --fps 50 --width 360 --height 360 --quality " & strQuality & " *") as text
##他オプション
(*

-o, --output <a.gif> Destination file to write to; "-" means stdout
-r, --fps <num> Frame rate of animation. If using PNG files as input, this means the speed, as all frames are kept. If video is used, it will be resampled to this constant rate by dropping and/or duplicating frames [default: 20]
--fast-forward <x> Multiply speed of video by a factor
(no effect when using images as input) [default: 1]
--fast 50% faster encoding, but 10% worse quality and larger file size
--extra 50% slower encoding, but 1% better quality
-Q, --quality <1-100> Lower quality may give smaller file [default: 90]
--motion-quality <1-100> Lower values reduce motion
--lossy-quality <1-100> Lower values introduce noise and streaks
-W, --width <px> Maximum width.
By default anims are limited to about 800x600
-H, --height <px> Maximum height (stretches if the width is also set)
--no-sort Use files exactly in the order given, rather than sorted
-q, --quiet Do not display anything on standard output/console
--repeat <num> Number of times the animation is repeated (-1 none, 0 forever or <value> repetitions
--fixed-color <RGBHEX> Always include this color in the palette
--matte <RGBHEX> Background color for semitransparent pixels
-h, --help Print help
-V, --version Print version


*)




|

[gifski]ムービーファイルをGIFにする


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
# ###FFMPEGのインストールが別途必要です
# https://ffmpeg.org/
# ###gifskiのインストールが別途必要です
# https://github.com/ImageOptim/gifski
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "AVFoundation"
use scripting additions
property refMe : a reference to current application
set appFileManager to refMe's NSFileManager's defaultManager()
##############################
###設定項目
###FFMPEGのパス
###通常はこちらかな?
# set strBinPath to ("/usr/local/bin/ffmpeg") as text
set strBinPath to ("$HOME/bin/ffmpeg.6/ffmpeg") as text

###gifskiのパス
set strGifskiBinPath to ("$HOME/bin/gifski/gifski") as text

#############################
###ダイアログ
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
############ デフォルトロケーション
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
############UTIリスト
set listUTI to {"public.movie"}

set strMes to ("ムービー・ファイルを選んでください") as text
set strPrompt to ("ムービー・ファイルを選んでください") as text
try
  ### ファイル選択時
  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
on error
log "エラーしました"
return "エラーしました"
end try

###
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
set strFilePathURL to (ocidFilePathURL's |path|()) as text
set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension()
set strFileName to (ocidBaseFilePathURL's lastPathComponent()) as text
###デスクトップにファイル名のフォルダ作って
set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
set ocidSaveDirPathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:(strFileName)
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
###↑のフォルダの中にイメージシーケンス書き出し用のフォルダを作る
set ocidSaveSequenceDirPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("sequence") isDirectory:true
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveSequenceDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
set strSaveSequenceDirPathURL to (ocidSaveSequenceDirPathURL's |path|()) as text
###出力用のGIFアニメ用のパス
set strGifFileName to (strFileName & ".gif") as text
set ocidGifFilePath to ocidSaveDirPathURL's URLByAppendingPathComponent:(strGifFileName) isDirectory:false
set strGifFilePath to (ocidGifFilePath's |path|()) as text

##イメージシーケンス生成
set strCommandText to ("pushd \"" & strSaveSequenceDirPathURL & "\" && " & strBinPath & " -i \"" & strFilePathURL & "\" frame%04d.png") as text
do shell script strCommandText
##
delay 3
##
set strCommandText to ("pushd \"" & strSaveSequenceDirPathURL & "/\" && " & strGifskiBinPath & " -o \"" & strGifFilePath & "\" frame*.png") as text
do shell script strCommandText


|

[GIF]シーケンス用の画像の間隔を間引く


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use framework "UniformTypeIdentifiers"
use framework "AppKit"
use scripting additions

property refMe : a reference to current application


###設定項目画像を間引く間隔
set numCntIntNo to 3 as integer


set strOpenAppBundleID to "com.apple.Preview"

###################################
#####対象アプリの対応ContentTypesを取得
###################################
set appFileManager to refMe's NSFileManager's defaultManager()
set ocidAppBundle to refMe's NSBundle's bundleWithIdentifier:(strOpenAppBundleID)
if ocidAppBundle is not (missing value) then
  set ocidAppPathURL to ocidAppBundle's bundleURL()
else
  set appNSWorkspace to refMe's NSWorkspace's sharedWorkspace()
  set ocidAppPathURL to appNSWorkspace's URLForApplicationWithBundleIdentifier:(strOpenAppBundleID)
end if
set ocidPlistPathURL to ocidAppPathURL's URLByAppendingPathComponent:("Contents/Info.plist") isDirectory:false
#####CFBundleDocumentTypesの取得
set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s initWithContentsOfURL:(ocidPlistPathURL)
set ocidDocTypeArray to ocidPlistDict's objectForKey:"CFBundleDocumentTypes"
####リストにする
set listUTl to {} as list
repeat with itemDocTypeArray in ocidDocTypeArray
  set listContentTypes to (itemDocTypeArray's objectForKey:"LSItemContentTypes")
  if listContentTypes = (missing value) then
    set strExtension to (itemDocTypeArray's objectForKey:"CFBundleTypeExtensions") as text
    set ocidContentTypes to (refMe's UTType's typeWithFilenameExtension:strExtension)
    set strContentTypes to ocidContentTypes's identifier() as text
    set strContentTypes to ("" & strContentTypes & "") as text
    set end of listUTl to (strContentTypes)
  else
    repeat with itemContentTypes in listContentTypes
      set strContentTypes to ("" & itemContentTypes & "") as text
      set end of listUTl to (strContentTypes)
    end repeat
  end if
end repeat

###################################
#####入力ダイアログ
###################################
#####ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
set ocidUserDesktopPathURLArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set ocidUserDesktopPathURL to ocidUserDesktopPathURLArray's firstObject()
set aliasDefaultLocation to (ocidUserDesktopPathURL's absoluteURL()) as alias
### set listUTI to {"public.png", "public.jpeg"}
set strPromptText to "ファイルを選んでください" as text
set strMesText to "ファイルを選んでください" as text
set listAliasFilePath to (choose file strMesText with prompt strPromptText default location (aliasDefaultLocation) of type listUTl with invisibles and multiple selections allowed without showing package contents) as list

###################################
#####出力先フォルダ
###################################
set aliasFilePath to (item 1 of listAliasFilePath) as alias
set strFilePath to (POSIX path of aliasFilePath) as text
set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
set ocidContainerDirPath to (ocidFilePath's stringByDeletingLastPathComponent)
set strContainerDirPath to (ocidContainerDirPath's stringByDeletingLastPathComponent) as text
set aliasDefaultLocation to (POSIX file strContainerDirPath) as alias
set strPromptText to "保存先フォルダを選んでください" as text
set strMesText to "保存先フォルダを選んでください" as text
set aliasDistDirPath to (choose folder strMesText with prompt strPromptText default location aliasDefaultLocation with invisibles without multiple selections allowed and showing package contents) as alias
set strDistDirPath to (POSIX path of aliasDistDirPath) as text
set ocidDistDirPathStr to refMe's NSString's stringWithString:(strDistDirPath)
set ocidDistDirPath to ocidDistDirPathStr's stringByStandardizingPath()
set ocidDistDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDistDirPath) isDirectory:true)
###################################
#####入力ファイル並び替え(ファイル名順)
###################################
set ocidFileURLArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0)
###URLのリストにする
repeat with itemAliasFilePath in listAliasFilePath
  set strFilePath to (POSIX path of itemAliasFilePath) as text
  set ocidFilePath to (refMe's NSString's stringWithString:strFilePath)
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath)
(ocidFileURLArrayM's addObject:ocidFilePathURL)
end repeat
###並び替え
set ocidSortDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:("absoluteString") ascending:(true) selector:"localizedStandardCompare:")
set ocidDescriptorArray to refMe's NSArray's arrayWithObject:(ocidSortDescriptor)
set ocidSortedArray to ocidFileURLArrayM's sortedArrayUsingDescriptors:(ocidDescriptorArray)
###################################
#####ファイルのコピー
###################################

set numCnkCnt to 1 as integer
repeat with itemSortedArray in ocidSortedArray
  if numCnkCnt = 1 then
    set ocidFilePathURL to itemSortedArray
    set ocidFileName to ocidFilePathURL's lastPathComponent()
    set ocidDistFilePathURL to (ocidDistDirPathURL's URLByAppendingPathComponent:(ocidFileName))
    set listDone to (appFileManager's copyItemAtURL:(ocidFilePathURL) toURL:(ocidDistFilePathURL) |error|:(reference))
  end if
  if numCnkCnt = numCntIntNo then
    set numCnkCnt to 1 as integer
  else
    set numCnkCnt to numCnkCnt + 1 as integer
  end if
end repeat



|

[Gif]gifアニメーションの各コマを別ファイルに保存(イメージシーケンス保存)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004#
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006##自分環境がos12なので2.8にしているだけです
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014##########################
015## ダイアログ
016##########################
017set appFileManager to refMe's NSFileManager's defaultManager()
018set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
019set aliasDefaultLocation to ocidUserDesktopPath as alias
020
021set listChooseFileUTI to {"com.compuserve.gif"}
022set strPromptText to "ファイルを選んでください" as text
023set strPromptMes to "ファイルを選んでください" as text
024set aliasFilePath to (choose file strPromptMes with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and showing package contents without multiple selections allowed) as alias
025##########################
026## パス
027##########################
028
029set strFilePath to (POSIX path of aliasFilePath) as text
030set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
031set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
032set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false
033###作成するフォルダ名
034set ocidFileName to ocidFilePathURL's lastPathComponent()
035set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
036set strSaveDirName to (strBaseFileName & "_Image Sequence") as text
037####コンテナディレクトリ
038set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
039###保存用ディレクトリ
040set ocidSaveFileDirURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strSaveDirName)
041###フォルダを作る
042set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveFileDirURL) withIntermediateDirectories:true attributes:(missing value) |error| :(reference)
043
044##########################
045## 画像読み込み
046##########################
047set ocidGifImage to refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL)
048set ocidGifImageArray to ocidGifImage's representations()
049set ocidGifImageRep to ocidGifImageArray's objectAtIndex:0
050##########################
051###保存時必要になるPNGオプション
052##########################
053####NSImageColorSyncProfileData
054set ocidColorSpace to refMe's NSColorSpace's displayP3ColorSpace()
055set ocidColorSpaceData to ocidColorSpace's colorSyncProfile()
056####NSImageEXIFData
057set ocidEXIFData to (ocidGifImageRep's valueForProperty:(refMe's NSImageEXIFData))
058####ガンマ値換算 まぁ2.2入れておけば間違い無いか…しらんけど
059set numGamma to (1 / 2.2) as number
060####propertiesデータレコード整形(PNG用)
061set ocidImageProperties to {NSImageGamma:(numGamma), NSImageEXIFData:(ocidEXIFData), NSImageInterlaced:false, NSImageColorSyncProfileData:(ocidColorSpaceData)} as record
062
063####GIFのコマ数 フレーム数
064set numFrameCnt to (ocidGifImageRep's valueForProperty:(refMe's NSImageFrameCount)) as integer
065log numFrameCnt
066###フレーム取り出し用のカウンタ
067set numSetFrameNo to 0 as integer
068
069repeat numFrameCnt times
070  ####フレーム番号 コマ番号 をセット
071  ocidGifImageRep's setProperty:(refMe's NSImageCurrentFrame) withValue:(numSetFrameNo)
072  ###確認用
073  ##  set ocidFlameRep to (ocidGifImageRep's valueForProperty:(refMe's NSImageCurrentFrame)) as integer
074  ##  log ocidFlameRep
075  #####保存用ファイル名 連番ゼロ
076  set strZeroSup to "000" as text
077  set strZeroSup to (strZeroSup & ((numSetFrameNo + 1) as text)) as text
078  set strZeroSup to (text -3 through -1 of strZeroSup) as text
079  set strSaveFileName to (strBaseFileName & "." & strZeroSup & ".png") as text
080  ###保存用のパスURL
081  set ocidSaveFilePathURL to (ocidSaveFileDirURL's URLByAppendingPathComponent:(strSaveFileName))
082  ###PNGデータに変換
083  set ocidSaveData to (ocidGifImageRep's representationUsingType:(refMe's NSBitmapImageFileTypePNG) |properties|:(ocidImageProperties))
084  ###保存
085  set ocidWroteToFileDone to (ocidSaveData's writeToURL:(ocidSaveFilePathURL) options:0  |error| :(reference))
086  ###カウントアップ
087  set numSetFrameNo to numSetFrameNo + 1 as integer
088end repeat
089
090###保存フォルダを選択して終了
091set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
092appSharedWorkspace's selectFile:(ocidSaveFileDirURL's |path|()) inFileViewerRootedAtPath:"/"
093
094
095
096
097
098
099
AppleScriptで生成しました

|

[gif2webp]GIFアニメをwebpに変換する


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
(* 別途 gif2webpが必要です
[applescript]libwebpインストール
https://quicktimer.cocolog-nifty.com/icefloe/2024/01/post-0a1a86.html
実行してから利用してください
*)
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

###設定項目
set strBinPath to ("~/bin/libwebp/bin/gif2webp") as text

##バイナリのパス
set strBinPathStr to refMe's NSString's stringWithString:(strBinPath)
set ocidFilePath to strBinPathStr's stringByStandardizingPath()
set strBinPath to ocidFilePath as string
##デフォルトロケーション
tell application "Finder"
  set aliasDefaultLocation to container of (path to me) as alias
  set aliasDesktopFolder to (path to desktop folder from user domain) as alias
end tell
###ダイアログを前面に
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder" to activate
else
  tell current application to activate
end if
##ダイアログ
set listAliasFilePath to (choose file with prompt "GIFファイルを選んでください" default location aliasDefaultLocation of type {"com.compuserve.gif"} with invisibles and multiple selections allowed without showing package contents) as list

##選んだファイルの数だけ実行
repeat with itemAliasFilePath in listAliasFilePath
  tell application "Finder"
    set aliasFilePath to itemAliasFilePath as alias
    ###ファイルパスを取得
    set strFilePath to (POSIX path of aliasFilePath) as text
  end tell
  ###コマンド整形
  set strCommandText to ("\"" & strBinPath & "\" \"" & strFilePath & "\" -q 100 -o \"" & strFilePath & ".webp\"") as text
  ####実行
  tell application "Terminal"
launch
activate
    set objWindowID to (do script "\n\n")
delay 2
do script strCommandText in objWindowID
  end tell
  
  ####処理が終わるのをまってから次にかかる
  repeat
    tell application "Terminal"
      tell front window
        set boolTabStatus to busy
      end tell
    end tell
    if boolTabStatus is false then
      exit repeat
      --->このリピートを抜けて次の処理へ
    else if boolTabStatus is true then
delay 3
      --->busyなのであと3秒まつ
    end if
  end repeat
  
  
end repeat

|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat Python Acrobat Reader Acrobat Reader Localized Acrobat Reference Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Admin XProtect Adobe Adobe Bridge Adobe FDKO Adobe Fonts Adobe Reference Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode Decode Barcode QR Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time defaults delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode HTML Entity Encode UTF8 Error EXIFData ffmpeg File File Name Finder Firefox Folder FolderAction Fonts Fonts ATS Fonts Python Foxit GIF github Guide HTML Icon Illustrator Image Events Image2PDF ImageOptim Input Dictionary iPhone iWork Javascript Jedit Json Label Language Leading Zero List locationd LRC lsappinfo m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Microsoft Fonts Microsoft Office Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMetadataItem NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDF Pymupdf PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit plutil postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML HTML XML LSSharedFileList XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML xmllint XML XMP YouTube zoom