Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

JPEG画像の破損チェック

Posted on 2月 11, 2018 by Takaaki Naganoya

かつて、破損JPEG画像はアプリケーションのクラッシュを引き起こすケースもあり、Mac OS Xでもなかなか細心の注意をはらって事前のチェックを行なっていました(Mac OS X 10.4のころ)。

AppleScriptによるバッチ処理では、大量のデータを相手にします。そのため、途中でエラーを発生させるようなイレギュラーなデータにはエラートラップを仕掛けてあらかじめ対処しておきますが、クラッシュを引き起こすような破損データについては事前に手の施しようがありません。

# 破損画像によるクラッシュが発生して処理が停止するトラブルに直面したときには、入稿データの添付画像の破損チェックを自動で行うようにして対処しました。そもそも破損していては話にならないので

この破損画像が引き起こすクラッシュは(iOSの方で)クラッカーからの格好の標的にされたため(初期の「脱獄」の手口がこの破損画像にともなうクラッシュ→実行権限乗っ取りでした)、対策がすすみ、iOSと共通基盤を持っているMac OS Xでも同様の対策が行われたためか、Mac OS X→OS X→macOSと呼称が変わるにつれて徐々にクラッシュしないように強化されてきた機能でもあります。

今日、破損画像にそれほど神経質にならなくても済むようになっていますが、古いOSを使い続けている環境がないわけではありません。そうした環境においては、画像処理前の破損画像のチェックは重要な処理であり続けることでしょう。

また、巨大な画像データを遅い回線/サーバー経由でダウンロードして処理する場合には、「念のため」チェックを行なっておくべきかもしれません。

本ScriptのようにJPEGマーカーの有無をチェックするのは、破損画像検出の手口としては入門レベルであり、画像処理を行うプログラムで実際に読み込み+表示+書き出しを行わせるぐらいの処理をしておく必要があります(読み込めて表示できても、書き出しができない破損画像にも遭遇しました)。

実際にさまざまな現場で集めた「破損画像」は、大切に自分の手元に集めてあります。

AppleScript名:JPEG画像の破損チェック
— Created 2006-10-17 by Somebody
— Modified 2015-10-06 by Takaaki Naganoya

set aFile to choose file of type {"public.jpeg"}
set dRes to VerifyCompleteJPEG(aFile) of me

— to verify whether a JPEG is a111 full or partial (e.g. partially downloaded) JPEG
— last two JPEG file bytes must be (ASCII character 255) & (ASCII character 217)
on VerifyCompleteJPEG(f)
  try
    set s to read f from -2 for 2
  on error
    return false –error "JPEG image is too short or currupted"
  end try
  
  
if s = (ASCII character 255) & (ASCII character 217) then
    return true
  else
    return false
  end if
end VerifyCompleteJPEG

★Click Here to Open This Script 

(Visited 891 times, 1 visits today)
Posted in file Image | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • シンプルな文字置換
  • macOS(Mac OS X/OS X)上のAppleScriptの歴史
  • Apple Creator Studioに含まれるKeynote/Pages/Numbersは新バージョン?
  • 最初期に書かれた書籍「AppleScript道入門」の序文をいま振り返る
  • 指定フォルダ内から指定拡張子のファイルを取得し、エイリアスだったらオリジナルのパスをPOSIX pathで取得
  • ASCII ART QR Encoder
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • MacBook Air/MacBook Proのディスプレイ開閉角度を取得
  • 暗黙のuseコマンド
  • 「AppleScriptセキュリティ実践ガイド」を発売
  • 簡易カラーチャート画像の出力 v2.1
  • 各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を
  • Keynote->Keynote Creator Studio(以下同様)
  • Finder上で選択中のHEIC画像から位置情報を削除_v5
  • 翻訳テスト
  • FSFindFolder failed with error=-43
  • YouTubeムービー再生実験
  • 2025年に書いた価値あるAppleScript
  • 関数計算ライブラリで一部のユーザーから再現しない問題が報告される件
  • ワークスペース切り替えv2.1

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (440) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (173) 26.0savvy (52) CotEditor (68) Finder (53) Keynote (123) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (80) Pages (58) Safari (45) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • Apple Inteligence
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Newt On Project
  • NFC
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spaces
  • Spellchecker
  • Spotlight
  • SVG
  • Swift
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2026年9月
  • 2026年8月
  • 2026年7月
  • 2026年6月
  • 2026年5月
  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC