アニメーションGIFからイメージデータとグローバル・ローカルカラーテーブル、アプリケーションデータを抜き出すサンプル for HSP by kerupani129 (載せきれないので分割 - その2)

アニメーションGIFからイメージデータとグローバル・ローカルカラーテーブル、アプリケーションデータを抜き出すサンプル for HSP by kerupani129 (載せきれないので分割 - その2)

続きの部分です。その1と連結して使ってください。

case 0x21 // 拡張ブロック
block_type=peek(file_data,index) : index+1
switch block_type
case 0xF9 // Graphic Control Extension
block_bs=peek(file_data,index) : index+1 // 必ず4
part_data2=peek(file_data,index) : index+1
block_r=part_data2/32 // 未使用
block_dm=(part_data2\32)/4
block_uif=(part_data2\4)/2
block_tcf=part_data2\2
block_dt=peek(file_data,index) : index+1
block_tci=peek(file_data,index) : index+1
block_bt=peek(file_data,index) : index+1 // 必ず0
swbreak
case 0xFE // Comment Extension
block_size=0
block_cd=""
repeat
block_bs=peek(file_data,index) : index+1
if block_bs=0x00 : break
memexpand block_cd,block_size+block_bs
memcpy block_cd,file_data,block_bs,block_size,index
block_size+block_bs
index+block_bs
loop
block_scd=block_size // コメントデータのサイズ
; GIFのコメントデータ (block_cd) の解析
bsave "dat\\CommentData_"+strf("%02d",block_nid)+".dat",block_cd,block_scd;
swbreak
case 0x01 // Plain Text Extension
block_bs=peek(file_data,index) : index+1 // 必ず12
block_tglp=wpeek(file_data,index) : index+2
block_tgtp=wpeek(file_data,index) : index+2
block_tgw=wpeek(file_data,index) : index+2
block_tgh=wpeek(file_data,index) : index+2
block_ccw=peek(file_data,index) : index+1
block_cch=peek(file_data,index) : index+1
block_tfci=peek(file_data,index) : index+1
block_tbci=peek(file_data,index) : index+1
block_size=0
block_ptd=""
repeat
block_bs=peek(file_data,index) : index+1
if block_bs=0x00 : break
memexpand block_ptd,block_size+block_bs
memcpy block_ptd,file_data,block_bs,block_size,index
block_size+block_bs
index+block_bs
loop
block_sptd=block_size // プレーンテキストデータのサイズ
; GIFのプレーンテキストデータ (block_ptd) の解析
bsave "dat\\PlainTextData_"+strf("%02d",block_nid)+".dat",block_ptd,block_sptd;
swbreak
case 0xFF // Application Extension
block_bs=peek(file_data,index) : index+1 // 必ず11
block_ai=""
part_size=8
memexpand block_ai,part_size
memcpy block_ai,file_data,part_size,0,index
index+part_size
block_aac=""
part_size=3
memexpand block_aac,part_size
memcpy block_aac,file_data,part_size,0,index
index+part_size
block_size=0
block_ad=""
repeat
block_bs=peek(file_data,index) : index+1
if block_bs=0x00 : break
memexpand block_ad,block_size+block_bs
memcpy block_ad,file_data,block_bs,block_size,index
block_size+block_bs
index+block_bs
loop
block_sad=block_size // アプリケーションデータのサイズ
; GIFのアプリケーションデータ (block_ad) の解析
bsave "dat\\ApplicationData_"+strf("%02d",block_nid)+".dat",block_ad,block_sad;
swbreak
swend
swbreak
swend
loop

Copyright (C) 2012 Kerupani129 Project. All Rights Reserved.
このソースをコピペして、実際に出力してみたり、
データを直接扱いたいがために出力せずに変数に残しておいて、後ろに処理するプログラムを付け足すとかそういうのは許可しますが、改変したものをupするときはコメントぐらいください。(トラバでもいいです。)
その1とその2を大雑把に説明すると、
その1はヘッダーとイメージブロックの解析で、
その2は拡張ブロックの解析です。
↓クリックだけでもお願いします


「アニメーションGIFからイメージデータとグローバル・ローカルカラーテーブル、アプリケーションデータを抜き出すサンプル for HSP by kerupani129 (載せきれないので分割 - その2)」への2件のフィードバック

  1. おめでとうございます^^
    何かに利用してみては如何でしょう。

  2. ありがとうございます。
    あ、でもイメージデータの解析ができてないので…。
    それができたら利用しまくります。

コメントは受け付けていません。