— Created 2015-08-18 by Shane Stanley — Modified 2018-02-10 by Takaaki Naganoya use AppleScript version "2.4" use scripting additions use framework "Foundation"
set oldPath to POSIX path of (choose file) set aRes to chkHandlingByNSImage(oldPath, "JPEG") –> {nsImageAcceptable:true, requireConvert:true}
on chkHandlingByNSImage(aPath, targetFormatExt) set aRes to chkNSImageAcceptableFormat(aPath, targetFormatExt) set bRes to chkIsThereNeedToConvert(aPath, targetFormatExt) return {nsImageAcceptable:aRes, requireConvert:bRes} end chkHandlingByNSImage
–与えられた画像ファイルがNSImageでハンドリング可能かを取得 on chkNSImageAcceptableFormat(aPath as text, targetFormatExt as text) — check if UTI of file is one NSImage can read set theWorkspace to current application’s NSWorkspace’s sharedWorkspace() set theType to theWorkspace’s typeOfFile:aPath |error|:(missing value) — returns UTI of file –> (NSString) "public.jpeg" set supportedTypes to current application’s NSImage’s imageTypes() — returns supported UTIs –> (NSArray) {"com.adobe.pdf", "com.apple.pict", "com.adobe.encapsulated-postscript", "public.jpeg", "public.png", "com.compuserve.gif", "public.jpeg-2000", "com.canon.tif-raw-image", "com.adobe.raw-image", "com.dxo.raw-image", "com.canon.cr2-raw-image", "com.leafamerica.raw-image", "com.hasselblad.fff-raw-image", "com.hasselblad.3fr-raw-image", "com.nikon.raw-image", "com.nikon.nrw-raw-image", "com.pentax.raw-image", "com.samsung.raw-image", "com.sony.raw-image", "com.sony.sr2-raw-image", "com.sony.arw-raw-image", "com.epson.raw-image", "com.kodak.raw-image", "public.tiff", "com.apple.icns", "com.canon.crw-raw-image", "com.fuji.raw-image", "com.panasonic.raw-image", "com.panasonic.rw2-raw-image", "com.leica.raw-image", "com.leica.rwl-raw-image", "com.konicaminolta.raw-image", "com.olympus.sr-raw-image", "com.olympus.or-raw-image", "com.olympus.raw-image", "com.adobe.photoshop-image", "com.microsoft.ico", "com.microsoft.bmp", "com.microsoft.cur", "com.truevision.tga-image", "com.sgi.sgi-image", "com.apple.macpaint-image", "com.ilm.openexr-image", "public.radiance", "public.mpo-image", "public.pbm", "public.pvr", "com.apple.rjpeg", "com.apple.quicktime-image", "com.kodak.flashpix-image"} if (supportedTypes’s containsObject:theType) as boolean is false then return "File format is unsupported" — check required type doesn’t already match else return true end if end chkNSImageAcceptableFormat
–変換元の画像パスと変換対象の拡張子を与え、変換不要(同一ファイル"JPG"–> "JPEG"など)かをチェックする on chkIsThereNeedToConvert(aPath as text, targetFormatExt as text) set theWorkspace to current application’s NSWorkspace’s sharedWorkspace() set theType to theWorkspace’s typeOfFile:aPath |error|:(missing value) — returns UTI of file if (theWorkspace’s filenameExtension:targetFormatExt isValidForType:theType) as boolean then return false –"No conversion needed" else return true end if end chkIsThereNeedToConvert |