WordPress Ktai Styleプラグイン 透過GIFの縮小画像で透過されない

WordPressの携帯対応プラグイン Ktai Styleを使わせてもらっとる。

とても、便利なプラグイン。

携帯で見やすいように、大きなサイズの画像は、幅96pxの縮小画像に変換してくれる。

 

ただ、これで困ったことがあって、透過GIFが縮小されたときに、透過色の部分が真っ黒になってしまう。

ものすごい困るってことでもないけど、ちょっと気になる。

 

で、ちょろっと調べたところ、縮小処理はこの関数でやっているらしい。

\ktai-style\inc\shrinkage.php € create_thumbnail( )

 

どうも、GIF、PNG画像を縮小するときに透過色を指定していないかららしい。

で、imagecopyresampled( )を使って元画像をコピーする処理の前に、こんな処理を入れてみた。

//透過色処理
switch ($type) {
case IMAGETYPE_GIF:
case IMAGETYPE_PNG:
// 透過色インデックスの取得
$trnprt_indx = imagecolortransparent($image);
if ($trnprt_indx == -1) break; 

// 透過色RGB値の取得
$trnprt_color = imagecolorsforindex($image, $trnprt_indx);

// 修正後画像での透過色(にする色)のインデックスを取得
$trnprt_indx = imagecolorallocate($thumbnail, $trnprt_color[‘red’], $trnprt_color[‘green’], $trnprt_color[‘blue’]);
if ($trnprt_indx == -1) break;

// 透過色インデックスで塗りつぶす
imagefill($thumbnail, 0, 0, $trnprt_indx);

// 透過色インデックスを透過色に指定
imagecolortransparent($thumbnail, $trnprt_indx);

break;
}

 

これをすると、微妙に透過できるけど、キレイに透過できん。

理由はよーわからんけ、調べてみるかな。

 

とりあえず、今は決め打ちで黒を透過色指定するようにしとる。

//透過色処理
switch ($type) {
case IMAGETYPE_GIF:
case IMAGETYPE_PNG:
//黒を透過色に指定
$trnprt_indx = imagecolorallocate($thumbnail, 0, 0, 0); 

// 透過色インデックスを透過色に指定
imagecolortransparent($thumbnail, $trnprt_indx);

break;
}

 

Ktai styleが生成した縮小画像は、/wp-content/uploads の中に、「元画像ファイル名.ktai.gif」というようなファイル名で保存されとるけ、携帯用に縮小画像を作成して、上書きアップロードした方がキレイな画像が表示できるんかもしれん。

(いちいち縮小画像を手動でつくるのは面倒だけど)

 

 

コメントを残す