.·.·ε多智花ღ楓з·.·.のブログ -8ページ目

.·.·ε多智花ღ楓з·.·.のブログ

セカンドライフ&MonsterHunterFrontierのことや自身の製作物など不定期更新で書いていきます

以前投稿した「エクセルで侵略!イカ娘OPを再現してみたでゲソ!」に解説希望のコメを書いて下さった方がいらっしゃったので、この記事で使用したツールやコードの解説、変換時の留意点などを書いてみようと思います。

VBAの基本的な記述方法などを理解しているのを前提としますので、解らない場合は入門書などで勉強してから作成することをお勧めします。
一部簡単なAPIも使用します。



まずは使用ツール

 Microsoft Ofice EXCEL2007

 AviUtl 動画から連番BMP生成

 Irfan View32 日本語版 連番BMPを自由な色数に減色




次に変換ミスを少しだけ軽減する作業
 作成する動画が1種類だけで、他に作らないのであれば省いてもOK

 変数名などは適当に書きますので、解りやすいように変更して下さい。

   Dim fileName As String
   Dim totalFile As Long

   fileName = Dir( thisWorkbook.path & "\BMP\bmp_*.bmp")
   Do While fileName <> ""
     totalFile = totalFile + 1
     fileName = Dir()
   Loop


 ここまででBMPフォルダ内に入っているBMP(ファイル名=BMP_0000.bmp)の数を取得します。
 totalFile変数-1の数値が総フレーム数(0~totalFile-1)になります。
 このコードをFunctionでモジュールとしても良いのですが、totalFileは何度も使用するのでグローバルで宣言するか戻り値として返す必要があります。


 続いてファイルの情報を取得します。
 解像度の取得のためなので、手動で入れられる場合は省けます。

   Dim fp As Long
   Dim FileSize As Long
   Dim readFile() As Byte
   Dim bmpFormat_pos(15) As Integer
   Dim GetHedder(15) As Long
   Dim a,b As Integer
   Dim a2,a3 As Long

   For i = 0 to 15
     Select Case i
       Case 0,2 To 3,8 To 9
         b = 2
       Case Else
         b = 4
     End Select
     bmpFormat_pos(i) = b
   Next i

   fp = FreeFile
   Open thisWorkbook.path & "\BMP\bmp_0000.bmp" For Binary As #fp
   FileSize = LOF(fp)
   Get #fp, , readFile
   Close #fp

   a = 0
   For i = 0 To 15
    a2 = 0
    For i2 = 0 To bmpFormat_pos(i) - 1 'readFileをLong型に書き換え
     a3 = readFile(a)
     if i2 = 0 then
       a2 = a3
     ElseIf i2 = 1 then
       a2 = a2 + ( a3 * 256)
     ElseIf i2 = 2 then
       a2 = a2 + ( a3 * 65536)
     ElseIf i2 = 3 then
       a2 = a2 + ( a3 * 16777216)
     End If

     a = a + 1
    Next i2
    GetHedder(i) = a2
   Next i



 これのGetHedder(6)が幅、GetHedder(7)が高さになります。
 この2つも何度も使うことになるので、解りやすい変数に代入しておくと楽です。



画像からピクセルデータを取得します

   Dim PixData()
   Dim now_fram As String
   Dim hFile As Long
   Dim FileSizeB As Long

   ReDim PixData(GetHedder(6),GetHedder(7), 2, totalFile-1)  'それぞれ取得してない場合は手入力
   For i = 0 To totalFile - 1 'ファイル数取得してない場合はフレーム数入力
     now_fram = Format(i, "0000")
     fileName = thisWorkbook.path & "\BMP\bmp_" & now_fram & ".bmp"
     If fileName <> "False" Then
      hFile = FreeFile
      Open fileName For Binary As #hFile
      FileSizeB = LOF(hFile)
      ReDim readFile(FileSizeB)
      Get #hFile, , readFile
      Close #hFile
      For i2 = 0 To GetHedder(7) - 1
       For i3 = 0 To GetHedder(6) - 1
        For c = 0 To 2
         PixData(i3,i2,c,i) = readFile(((GetHedder(6) * 3 *i2)+(i3 * 3) + (GetHedder(4) + c))
        Next c
       Next i3
      Next i2
     End if
   Next i




これでPixData(x座標,y座標,RGB値)にピクセルデータが入ります。

基礎部分は以上となります。
あとはPixDataの値を基にセルに配色していけば変換完了となります。



この記事は随時追記しながら更新していこうと思います。
東日本が大地震により甚大な被害を被りましたが、こ…じさんが歌を投稿して下さいましたヾ(@°▽°@)ノ

【Win2000で頑張ってみた】Vista【こ…じ】



私もこ…じさんも、震度6強の地震が起きた地域にいましたが、内陸部だった為、直接的な被害はありませんでした。
被害はないとはいえ、地震の恐怖で悲観的になりそうな状況ですが、歌を聴くことで気分的にだいぶ楽になりました。
こういう時だからこそ被害を受けなかった人達は、無理に被災地のことを悲しんで暗くなるより、まずは自分なりに楽しめることをして気持ちを落ち着かせることが重要だと思います。既に日数が経ってるので多くの人は落ち着いていると思いますが。


更新サボってすみません><

こ…じさんの投稿を記事に書くの忘れていました・・・


というわけで改めて、
こ…じさんの歌ってみたが投稿されました!!

【Win2000で頑張ってみた】なないろの朝【こ…じ】




今回からは使用している神OSを全面にアピールしたタイトルになっています!!

なぜマイクロソフトはこの神OSをサポート終了したのか・・・

Windows2000は主に企業向けでサーバーとしても非常に優秀なものすごく安定したOSだったというのに・・・

以降のXP VISTA 7 と、NT系のOSでありながら一般ユーザーも対象にした万能OS()にしたせいで最低動作スペックが大幅に引き上げられ、同時に安定性が著しく低下

にも関わらず安定していた2000の存在を消し去る・・・


いっそNT系やめてDOSベースの9xシリーズに戻してほしい



っと、話が大きくずれましたが、

今回の曲は非常に綺麗で落ち着いた感じです。

凄くさわやかな始まり方をしながら、ものすごい変拍子。さらには静かな音色でありながら楽しげなリズム感の曲となっています。

非常に難しそうな曲でありながら、いつも通りの爽やかな声で歌いあげています。


更新が遅くなり、現状を見ているから書けることですが、これだけ良い原曲に良い声でさらに神OSでありながら、
再生数・コメントが非常に少ない・・・

再生数に関しては視聴者の気まぐれと運もかかってくるのでどうしようもないですが、
コメントが全く増えないのが意外すぎます

歌ってみた系は、良いコメだけでなく批判コメも書かれやすいですが、比較的コメント率が高いジャンルだと思います。


もはや深刻な米不足なんてもんじゃない!!

暴動が起きてもいいレベルだ!!!