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

簡易カラーチャート画像の出力 v2.1

Posted on 9月 3 by Takaaki Naganoya

簡易的なカラーチャートの画像を出力するAppleScriptです。

カラーチャートを用いて色のチェックを行いたいことはありますが、既存の著名なカラーチャートには著作権が存在しており、おいそれと利用できないケースが多々あります。

そこで、そこそこの品質で納得できる内容の、簡易的なカラーチャート画像を出力するAppleScriptを作成してみました(Geminiに書かせたものを清書)。


▲当初(v1.0)はこのようなチャートを出力していたが、書くのに時間がかかりすぎるのと実用性がいまひとつだったので現状(v2.x)に変更した

出力画像サイズや、枠線の太さ、出力先のファイルパスを指定できるようになっており、各種レビューなどで著作権に気を使うことなくカラーチャートを使用できます。

各種AIにプログラムを書かせると、サブルーチンも何も宣言せず「とりあえず動けばいい」という内容のコードを出力しがちですが、サブルーチンとして使い回せるようにしておけば、パラメータの変更などを行うやすくなります。

また、「大きなプログラム」を組み立てるさいにも、サブルーチン化しておいたほうが都合がよくなります。

AppleScript名:簡易カラーチャート画像の出力 v2.1.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2026/08/28
—
–  Copyright © 2026 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.8"
use framework "Foundation"
use framework "AppKit"
use scripting additions

— 保存先の指定
set filePath to choose file name with prompt "カラーチャートの保存先を指定してください" default name "ColorChart.png" default location (path to pictures folder)
if filePath is false then return

— Posix pathの取得
set posixPath to POSIX path of filePath
if not (posixPath ends with ".png") then
  set posixPath to posixPath & ".png"
end if

— 出力画像サイズ (1200 x 800 pixel)
set canvasWidth to 1200
set canvasHeight to 800

— グリッド(マス目)の分割数設定
— 横方向(色相 H): 24段階
— 縦方向(明度/彩度 B/S): 16段階
set cols to 24
set rows to 16

— マスの間の隙間(枠線)の幅(ピクセル指定、0にすると隙間なし)
set gap to 8

–カラーチャート画像を作成して指定パスにPNGファイルとして書き込み
set {aRes, aMes} to genColorChartImage(gap, cols, rows, canvasWidth, canvasHeight, posixPath) of me
if aRes = false then display dialog aMes

on genColorChartImage(gap, cols, rows, canvasWidth, canvasHeight, posixPath)
  
  
— 1マスのサイズ計算
  
set cellWidth to canvasWidth / cols
  
set cellHeight to canvasHeight / rows
  
  
— NSBitmapImageRepの作成
  
set imgRep to current application’s NSBitmapImageRep’s alloc()’s initWithBitmapDataPlanes:(missing value) pixelsWide:canvasWidth pixelsHigh:canvasHeight bitsPerSample:8 samplesPerPixel:4 hasAlpha:true isPlanar:false colorSpaceName:(current application’s NSCalibratedRGBColorSpace) bytesPerRow:0 bitsPerPixel:0
  
  
— 描画コンテキストの作成
  
current application’s NSGraphicsContext’s saveGraphicsState()
  
set currentContext to current application’s NSGraphicsContext’s graphicsContextWithBitmapImageRep:imgRep
  
current application’s NSGraphicsContext’s setCurrentContext:currentContext
  
  
— 背景を黒で塗る(マスの間のグリッド線になります)
  
current application’s NSColor’s blackColor()’s |set|()
  
current application’s NSRectFill(current application’s NSMakeRect(0, 0, canvasWidth, canvasHeight))
  
  
— カラーチャート(グリッド)の描画
  
repeat with col from 0 to (cols – 1)
    — X軸: 色相 (Hue: 0.0 〜 1.0)
    
set hueVal to col / cols
    
    
repeat with row from 0 to (rows – 1)
      — Y軸: 明度 (Brightness: 上に行くほど明るく、下に行くほど暗く)
      
set brightnessVal to (rows – row) / rows
      
— 彩度 (Saturation: 1.0 固定、または縦方向に応じて調整可能)
      
set saturationVal to 1.0
      
      
— 特例: 一番下の行はグレースケール(無彩色)にする場合
      
if row is (rows – 1) then
        set cellColor to (current application’s NSColor’s colorWithCalibratedWhite:(col / (cols – 1)) alpha:1.0)
      else
        set cellColor to (current application’s NSColor’s colorWithHue:hueVal saturation:saturationVal brightness:brightnessVal alpha:1.0)
      end if
      
      
cellColor’s |set|()
      
      
— 描画するマスの位置とサイズ(隙間gapを考慮)
      
set rectX to col * cellWidth + (gap / 2)
      
set rectY to row * cellHeight + (gap / 2)
      
set rectW to cellWidth – gap
      
set rectH to cellHeight – gap
      
      
set rectToFill to current application’s NSMakeRect(rectX, rectY, rectW, rectH)
      
current application’s NSRectFill(rectToFill)
    end repeat
  end repeat
  
  
— グラフィックスコンテキストの復元
  
current application’s NSGraphicsContext’s restoreGraphicsState()
  
  
— PNG表現に変換して保存 (NSPNGFileType / 数値4を指定)
  
set pngFileType to current application’s NSPNGFileType
  
if pngFileType is missing value then set pngFileType to 4 — 互換性フォールバック
  
  
set pngData to imgRep’s representationUsingType:pngFileType |properties|:(missing value)
  
set writeResult to pngData’s writeToFile:posixPath atomically:true
  
  
if writeResult as boolean then
    set targSizeStr to (canvasWidth as string) & "x" & (canvasHeight as string)
    
    
return {true, targSizeStr & "のカラーチャートを出力しました"}
  else
    return {false, "ファイルの保存に失敗しました。"}
  end if
end genColorChartImage

★Click Here to Open This Script 

(Visited 1 times, 1 visits today)
Posted in Color Image | Tagged 15.0savvy 26.0savvy 27.0savvy | 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で取得
  • MacBook Air/MacBook Proのディスプレイ開閉角度を取得
  • ASCII ART QR Encoder
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • Adobe InDesignのAppleScript実行エンジンがCarbonからCocoaベースに書き換えられる
  • 「AppleScriptセキュリティ実践ガイド」を発売
  • 暗黙のuseコマンド
  • 開始時刻から終了時刻までhh:mm形式の文字列を15分単位でリスト出力
  • 各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を
  • Keynote->Keynote Creator Studio(以下同様)
  • Finder上で選択中のHEIC画像から位置情報を削除_v5
  • 翻訳テスト
  • FSFindFolder failed with error=-43
  • YouTubeムービー再生実験
  • 2025年に書いた価値あるAppleScript
  • 関数計算ライブラリで一部のユーザーから再現しない問題が報告される件

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