These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
||||||||||||||||||||||||||||||||||||||||||
% php sample/swfdump.phps ~/tmp.swf <略> [169] tag=DefineBitsLossless2(36) length=8 image_id=69 format=3 width=84 height=188 <略>正解!
compress(tmp_buff, &compsize, old_buff_ref, old_size); fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
XXX: compsize=0 old_size=16816ここで compsize (圧縮後の値) が 0 になるので画像データが消えるのですが、
fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size"); compress(tmp_buff, &compsize, old_buff_ref, old_size); fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
AAA: compsize=0 old_size=16816 XXX: compsize=0 old_size=16816あーーっっ。○rz
fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size"); compress(tmp_buff, &compsize, old_buff_ref, old_size); fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");圧縮後のデータの格納先 buff としてどの位確保したのかを 伝えないとダメでした。
compsize = old_size; fprintf(stderr, "AAA: compsize=%lu old_size=%lu\n, compsize, old_size"); compress(tmp_buff, &compsize, old_buff_ref, old_size); fprintf(stderr, "XXX: compsize=%lu old_size=%lu\n, compsize, old_size");
AAA: compsize=16816 old_size=16816 XXX: compsize=8543 old_size=1681format = 5 では初期化してたけど format = 3 では忘れてたみたい。 format = 3 の動作確認もしてましたが、stack のゴミが入っていて たまたま動いていたようです。
replaceGIFData($image_id, $gif_data);既存の PNG, Jpeg 入れ替えと同じインターフェースです。
function detect_image_ext(&$imagedata) { $image_sig = substr($imagedata, 0, 0x10); if (strpos($image_sig, 'JFIF') === 6) { $ext = '.jpg'; } elseif (strpos($image_sig, 'PNG') === 1) { $ext = '.png'; } elseif (strpos($image_sig, 'GIF') === 0) { $ext = '.gif'; } else { $ext = false; } return $ext; }間違えてたらごめんなさい。(´Д`;)
* Visual C++ 2008 Express Edition には MFC と ATL は含まれていますか。 いいえ。Visual C++ 2008 Express Edition には MFC と ATL は含まれていません。 MFC と ATL は Visual Studio 2008 Standard Edition 以上に含まれています。昔、購入した Visual C++ 6.0 standard edition があったので、 こっちでコンパイル。
/* CDialog::OnPaint(); */ CPaintDC dc(this); // 描画用のデバイス コンテキスト wglMakeCurrent(dc.GetSafeHdc(), m_hGLRC); glClearColor(0.0f, 0.0f, 0.5f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); wglMakeCurrent(NULL, NULL);さて、開発環境は出来たので遊ぶとしますか。
BitmapPixelData ARGB[image data size] Array of pixel colors. Number of entries is BitmapWidth * BitmapHeight. The RGB data must already be multiplied by the alpha channel value.Flash CS3 とかで画像を放り込むと透明な場所の RGB 値に変化があったのは そういう事か…
alpha 値(不透明度)が 0, 255 以外の時に表示される色がおかしくなる不具合を修正 - PNG の (R, G, B, A) を (R*A/255, G*A/255, B*A/255, A) に変換し Lossless2 タグに保存するように修正 - GIF は透明度 pixel を (0, 0, 0, 0) で保存するように修正
Screen Infomation: (Width, Height)=(159, 45) ColorResolution=8 BackGroundColor=0 ColorMapObject: ColorCount=128 BitsPerPixel=7 <略> ImageCount=1 # Image No. 0 ImageDesc (Left, Top)=(0, 0) (Width, Height)=(159, 46) Interlace=0なるほど。
% gcc -o gif_fixscreen gif_fixscreen.c -lgif % gif_fixscreen old.gif > new.gif
% identify 414954_160.gif 414954_160.gif GIF 159x46 159x45+0+0 PseudoClass 128c 2.6kbあれれ…
jpegを保存するときCKYKで保存するとIEでは表示できない
<?php $str = '日本語にほんご'; var_dump(mb_strlen($str, 'SJIS')); ?> というように、mb_strlen()関数の第2引数に$strの文字エンコードを指定すると、 PHPの内部エンコーディング設定に関わらず正しく動作するようになります。 環境が変わったら突然おかしくなったということを防ぐためにも、 第2引数で文字エンコードを指定するようにすることをお勧めします。うーんw