1 GIFを選ぶ
- ファイル
- —
- サイズ
- —
- 画像
- —
- コマ数
- —
- 再生時間
- —
- 繰り返し
- —
2 コマの出し方
残すコマ 全部ではなく2コマに1枚、5コマに1枚だけ取り出します。一覧表を作るときや、長い録画のときに。
表示時間の一覧 各コマがどれだけ表示され、どこに置かれていたか。PNGを並べたフォルダだけでは持ち出せない情報です。
3 コマ一覧
# GIF分解 — 1コマずつPNGに すべてのコマを、1枚ずつPNGで。 > アニメーションGIFをコマに分解し、1枚ずつPNGとして保存します。無料で、処理はすべてブラウザの中。透過も表示時間もそのまま残ります。アップロードは一切なく、オフラインでも動きます。 これはhttps://abox.tools/ja/split-gif/にあるブラウザー用の対話型ツールです。ファイルはそのブラウザーを実行する端末上で処理します。意図した共有や任意の通信機能はページ内で説明します。以下は文章による説明です。利用するにはアドレスを開いてください。 ## GIFは**ブラウザー内で処理**されます。処理のためのアップロードはありません。 GIFの読み込みも、展開も、描画も、すべてお使いのブラウザが行い、PNGはこの端末のメモリの中で作られます。仮にここの何かが送ろうとしたところで、このページの向こう側にアニメーションを受け取るサーバーが存在しません。 - ✗ アップロードなし - ✗ 登録なし - ✓ オフラインで動作 - ✓ ソース公開 - ✓ ファイルは端末から出ない ## GIFをコマに分解する手順 1. **GIFを選びます。** 選択欄にドラッグするか、手で選んでください。ブラウザがディスクから直接読み、見つけた内容をページが表示します。サイズ、コマ数、再生時間、繰り返し回数です。 2. **1枚のPNGに何を入れるか決めます。** **見えているとおりのコマ**が、ほとんどの人が求めるものです。アニメーションのその瞬間の絵全体になります。**そのコマが保存している画素だけ**は、ファイルが実際に持っている継ぎ当ての部分で、それ自身の大きさと位置のままです。GIFが小さく収まる理由がこれで、アニメーションの見た目とは別物です。 3. **透過の扱いを決めます。** PNGは透過をそのまま保てるので、これが正直な既定値です。透過を無視して黒く塗ってしまう場所へコマを持っていくのであれば、代わりに色で塗りつぶしてください。 4. **欲しいコマを選びます。** 既定はすべてです。「2コマに1枚だけ残す」は長い録画を間引くための設定で、一覧のチェックボックスがそれより優先されます。番号は変わらないので、隣をどれだけ捨てても42コマ目は42コマ目のままです。 5. **ダウンロードします。** 一覧から1枚ずつでも、まとめて1つのZIPでも構いません。ZIPなら保存の確認が数百回ではなく1回で済みます。ZIPには、各コマがどれだけ表示されたかを書いた`frames.txt`を入れられます。PNGを並べたフォルダだけでは伝えられない、唯一の情報です。 ## 詳しい解説 [GIFをコマに分解する方法](https://abox.tools/ja/guides/split-a-gif-into-frames/): アニメーションGIFの全コマをPNGで取り出します。なぜ一部のコマが絵の小さな断片でしかないのか、透明はどうなるのか、そして組み立て直せるように間隔を残しておく方法。 ## 箱の中のほかのツール - [GIF解析](https://abox.tools/ja/gif-analyzer/): コマ、表示時間、パレット、そしてバイトの行き先。 - [動画圧縮ツール](https://abox.tools/ja/compress-video/): 容量の上限を指定すると、設定を計算し、結果を実測します。 - [MP4変換ツール](https://abox.tools/ja/convert-to-mp4/): 録画、取り込み、カメラの動画をH.264とAACのMP4に。使える部分はコピーし、必要な部分だけ再エンコードします。 - [動画回転ツール](https://abox.tools/ja/rotate-video/): 右に90度、180度、左に90度。ヘッダーで回転する場合、映像の各フレームはそのまま保たれます。 ## よくある質問 ### GIFはどこかにアップロードされますか? いいえ。ファイルを読み、展開し、描くのはお使いのブラウザで、場所もお手元のハードウェアです。PNGもここのメモリで作られます。この道具にサーバー側はなく、ページの`Content-Security-Policy`には接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。回線を抜いても、GIFの分解はそのまま続きます。 ### コマの1枚が絵の一部にしか見えないのはなぜですか? ファイルがそう持っているからです。GIFは最初の1枚と、そのあとに続く継ぎ当てでできています。2枚目以降は変わった長方形だけを保存し、画面の残りは前のコマが置いていったものです。動かない壁の前で話す人の映像なら、1コマにつき顔だけが保存され、絵全体は保存されません。この形式が巨大にならない理由はここにあります。 \ \ いま見えているのは「そのコマが保存している画素だけ」を選んでいるからです。「見えているとおりのコマ」に切り替えれば、どのPNGも、その瞬間のアニメーションの絵全体になります。 ### 透過は保たれますか? 保たれます。GIFの透過は1ビットで、画素は塗られているか見えないかのどちらかしかありません。PNGはそれをそのまま保存できるので、透過部分はそのまま出てきます。塗りつぶした背景のほうがよければ、「透過部分」を色で塗る設定にしてください。その色はPNGに書き込まれ、あとから取り除くことはできません。 ### 表示時間が思っていた数字と違うのはなぜですか? GIFは表示時間を100分の1秒単位で持っていますが、ブラウザは1990年代から2以下の値を0.1秒に引き上げています。当時の回る地球儀のために書かれ、そのまま残った規則です。ファイルに0.01秒と書かれたコマは、どこでも0.10秒で再生されます。この道具は実際に再生される時間を表示し、ファイルの値と食い違うときは、その値も横に書きます。 ### 分解したコマをまた1つに戻せますか? 戻せます。このサイトの[GIF作成](https://abox.tools/ja/gif-maker/)でも、画像の入ったフォルダを受け取れる別のソフトでも構いません。ZIPに入る`frames.txt`はそのためのものです。分解するとタイミングは失われます。PNGには表示時間を書いておく場所がないからで、代わりにこの一覧が各コマの表示時間と位置を持ち出します。 ### コマはどの形式で保存できますか? PNGだけです。意図してそうしています。GIFのコマは最大256色と1ビットの透過で、PNGはそれをそのまま、劣化なく保存できます。JPEGなら透過は捨てられ、元のコマになかった色が作られ、平らな絵からはたいてい*大きい*ファイルができます。JPEGが必要なら、あとから[画像リサイズ](https://abox.tools/ja/resize-image/)で変換してください。 ### 読み込めるコマ数に上限はありますか? 元画像のバッファー、保持する差分、プレビュー、出力には512 MiBの計画見積もりを使い、デコード済みピクセルが128 Miを超える前に止めます。小さい差分でも元画像全体のバッファーは小さくなりません。安全でない計画は描画前に拒否し、部分的な結果もバッファー計画が収まる場合だけ利用できます。シートや集めたPNGも含みます。ブラウザー内部の割り当て、JSオブジェクト、canvasの上限により追加のメモリーや早い拒否があり得るため、空きメモリーの測定や不足しない保証ではありません。 ### 壊れたGIFでも開けますか? 多くの場合は開けます。途中で切れたファイルや終端のないファイルから完全なフレームを保持します。不完全なフレームの不足部分には、透明色でない限りパレットの最初の色を使い、画面で知らせます。読めるフレームがないファイルや安全でないバッファー計画は拒否します。 ### 無料ですか。アカウントは必要ですか? 無料です。アカウントも、ログインも、試用期間もありません。コマに透かしも入りません。このサイトには広告があり、それが費用を賄っています。広告にファイルの情報が渡されることはありません。 ### オフラインでも動きますか? 動きます。ページを一度読み込んでから通信を切っても、そのまま使えます。何もアップロードされていないことを示す、いちばん簡単な方法でもあります。処理のためにアニメーションをどこかへ送っている道具なら、線を抜いた瞬間に止まるからです。 ## この主張を確かめる方法 - **処理はこのブラウザー内で行います。** 入力と結果はブラウザー内で処理し、処理コードはそれらを処理用にアップロードしません。Content-Security-Policyは資源と接続先を制限しますが、許可済みの相手はリクエストを受け取れます。内容は検査せず、何も送られないことを単独で証明しません。具体的な操作の要求とソースを比較するか、切断中にローカル操作を完了してください。 - **GIFの読み取りは、このリポジトリの2ファイルです。** ブラウザはGIFを再生はしますが、その中身を渡してはくれません。そこでフォーマットはここで読んでいます。`src/shared/gif-decode.js`が入れ物とLZW展開、`src/shared/gif-compose.js`が、前のコマが下に敷かれた状態で各コマがどう見えるかを決める破棄規則です。ファイルを開くために何かを取りに行くことはなく、初回に落ちてくるエンジンもありません。 - **Googleが読み込むものと、渡されないもの。** 広告と計測のスクリプトはGoogleから来ています。そのどちらにも、アニメーションに関する情報は渡されません。ファイルも、コマも、名前も、サイズも、枚数もです。画像を読み、展開し、描き、書き出すコードはすべてこのオリジンから配信され、リポジトリに載っています。 - **寄付ボタンが読み込むものと、渡されないもの。** ヘッダーの「Buy me a coffee」ボタンは、cdnjs.buymeacoffee.comのスクリプトが描き、書体はGoogle Fontsから読み込みます。それはリンク以上のものではありません。訪問を報告することもなく、あなたやあなたのファイルについて渡されるものもありません。押さないかぎり何も起こらず、押した先は他人のサイトです。 - **オフラインで動きます。** 通信を切っても、このページのどの部分もそのまま動きます。これがいちばん単純な証明です。分解のためにアニメーションを送っている道具なら、線を抜いた瞬間に止まるからです。 **自分で確かめてください。**以上のどれも、鵜呑みにする必要はありません。このページは、リポジトリにあるテンプレートと設定から、誰でも読んで実行できるビルドスクリプトが生成しています。その結果は`dist`ブランチに置いてあるので、配信されているものと、ソースをビルドした結果とを差分で比べられます。 https://github.com/A-Box-of-Tools/website まず読むとよいのは、Content-Security-Policyについては`config/site.toml`、コマを展開する読み取り側は`src/shared/gif-decode.js`、それを重ね合わせる規則は`src/shared/gif-compose.js`です。どちらにもネットワークに触れられる行は一行もありません。
GIFをコマに分解する手順
- GIFを選びます。選択欄にドラッグするか、手で選んでください。ブラウザがディスクから直接読み、見つけた内容をページが表示します。サイズ、コマ数、再生時間、繰り返し回数です。
- 1枚のPNGに何を入れるか決めます。見えているとおりのコマが、ほとんどの人が求めるものです。アニメーションのその瞬間の絵全体になります。そのコマが保存している画素だけは、ファイルが実際に持っている継ぎ当ての部分で、それ自身の大きさと位置のままです。GIFが小さく収まる理由がこれで、アニメーションの見た目とは別物です。
- 透過の扱いを決めます。PNGは透過をそのまま保てるので、これが正直な既定値です。透過を無視して黒く塗ってしまう場所へコマを持っていくのであれば、代わりに色で塗りつぶしてください。
- 欲しいコマを選びます。既定はすべてです。「2コマに1枚だけ残す」は長い録画を間引くための設定で、一覧のチェックボックスがそれより優先されます。番号は変わらないので、隣をどれだけ捨てても42コマ目は42コマ目のままです。
- ダウンロードします。一覧から1枚ずつでも、まとめて1つのZIPでも構いません。ZIPなら保存の確認が数百回ではなく1回で済みます。ZIPには、各コマがどれだけ表示されたかを書いた
frames.txtを入れられます。PNGを並べたフォルダだけでは伝えられない、唯一の情報です。
詳しい解説
GIFをコマに分解する方法 アニメーションGIFの全コマをPNGで取り出します。なぜ一部のコマが絵の小さな断片でしかないのか、透明はどうなるのか、そして組み立て直せるように間隔を残しておく方法。
箱の中のほかのツール
よくある質問
GIFはどこかにアップロードされますか?
いいえ。ファイルを読み、展開し、描くのはお使いのブラウザで、場所もお手元のハードウェアです。PNGもここのメモリで作られます。この道具にサーバー側はなく、ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。回線を抜いても、GIFの分解はそのまま続きます。
コマの1枚が絵の一部にしか見えないのはなぜですか?
ファイルがそう持っているからです。GIFは最初の1枚と、そのあとに続く継ぎ当てでできています。2枚目以降は変わった長方形だけを保存し、画面の残りは前のコマが置いていったものです。動かない壁の前で話す人の映像なら、1コマにつき顔だけが保存され、絵全体は保存されません。この形式が巨大にならない理由はここにあります。
いま見えているのは「そのコマが保存している画素だけ」を選んでいるからです。「見えているとおりのコマ」に切り替えれば、どのPNGも、その瞬間のアニメーションの絵全体になります。
透過は保たれますか?
保たれます。GIFの透過は1ビットで、画素は塗られているか見えないかのどちらかしかありません。PNGはそれをそのまま保存できるので、透過部分はそのまま出てきます。塗りつぶした背景のほうがよければ、「透過部分」を色で塗る設定にしてください。その色はPNGに書き込まれ、あとから取り除くことはできません。
表示時間が思っていた数字と違うのはなぜですか?
GIFは表示時間を100分の1秒単位で持っていますが、ブラウザは1990年代から2以下の値を0.1秒に引き上げています。当時の回る地球儀のために書かれ、そのまま残った規則です。ファイルに0.01秒と書かれたコマは、どこでも0.10秒で再生されます。この道具は実際に再生される時間を表示し、ファイルの値と食い違うときは、その値も横に書きます。
分解したコマをまた1つに戻せますか?
戻せます。このサイトのGIF作成でも、画像の入ったフォルダを受け取れる別のソフトでも構いません。ZIPに入るframes.txtはそのためのものです。分解するとタイミングは失われます。PNGには表示時間を書いておく場所がないからで、代わりにこの一覧が各コマの表示時間と位置を持ち出します。
コマはどの形式で保存できますか?
PNGだけです。意図してそうしています。GIFのコマは最大256色と1ビットの透過で、PNGはそれをそのまま、劣化なく保存できます。JPEGなら透過は捨てられ、元のコマになかった色が作られ、平らな絵からはたいてい大きいファイルができます。JPEGが必要なら、あとから画像リサイズで変換してください。
読み込めるコマ数に上限はありますか?
元画像のバッファー、保持する差分、プレビュー、出力には512 MiBの計画見積もりを使い、デコード済みピクセルが128 Miを超える前に止めます。小さい差分でも元画像全体のバッファーは小さくなりません。安全でない計画は描画前に拒否し、部分的な結果もバッファー計画が収まる場合だけ利用できます。シートや集めたPNGも含みます。ブラウザー内部の割り当て、JSオブジェクト、canvasの上限により追加のメモリーや早い拒否があり得るため、空きメモリーの測定や不足しない保証ではありません。
壊れたGIFでも開けますか?
多くの場合は開けます。途中で切れたファイルや終端のないファイルから完全なフレームを保持します。不完全なフレームの不足部分には、透明色でない限りパレットの最初の色を使い、画面で知らせます。読めるフレームがないファイルや安全でないバッファー計画は拒否します。
無料ですか。アカウントは必要ですか?
無料です。アカウントも、ログインも、試用期間もありません。コマに透かしも入りません。このサイトには広告があり、それが費用を賄っています。広告にファイルの情報が渡されることはありません。
オフラインでも動きますか?
動きます。ページを一度読み込んでから通信を切っても、そのまま使えます。何もアップロードされていないことを示す、いちばん簡単な方法でもあります。処理のためにアニメーションをどこかへ送っている道具なら、線を抜いた瞬間に止まるからです。