こんには、ブログ初心者のコモリ雲です。gifファイルをwordpressにアップロードすると透過部分が黒くなる現象にであったのでメモ書き。wordpress6.3.1での状況です。
症状
ロゴデータをgif形式で、透過部分を作成していたのですが、wordpressにアップロードすると透過部分が黒く反転してしまっていました。
試してみたこと(失敗)
とある記事を参考に、サーバーのファイルシステムにアクセスし、wp-includesフォルダのmedia.phpを編集してみることに。
下記の「wp_imagecreatetruecolor」ファンクション(3,918行目あたり)を少し編集してみました。
function wp_imagecreatetruecolor( $width, $height ) {
$img = imagecreatetruecolor( $width, $height );
if ( is_gd_image( $img )
&& function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' )
) {
imagealphablending( $img, false );
imagesavealpha( $img, true );
}
return $img;
}
黄色いマーカー部分を追記しました。
function wp_imagecreatetruecolor( $width, $height ) {
$img = imagecreatetruecolor( $width, $height );
if ( is_gd_image( $img )
&& function_exists( 'imagealphablending' ) && function_exists( 'imagesavealpha' )
) {
if ( function_exists( 'imagecolortransparent' ) && function_exists( 'imagecolorallocatealpha' ) )
imagecolortransparent( $img, imagecolorallocatealpha( $img, 0, 0, 0, 127 ) );
imagealphablending( $img, false );
imagesavealpha( $img, true );
}
return $img;
}
残念ながらwordpressがエラーを吐き、管理画面が動かない状況に。
編集前のmedia.phpファイルを再度アップロードして、元に戻しました。
結論として
私はおとなしくPNG形式で対応することにしました。