![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんばんわ
今とても困っています。
その内容は、
「PHPのGDを使って透過PNGを減色させる」といった処理なのですが、
減色関数?のimageTrueColorToPalette()を使って処理を行っても、透過が
保持されず、添付画像のようになってしまいます。
作成したコードは以下になります。
$pngimg="./ff-logo-big.png";
$resource = imageCreateFromPng($pngimg);
echo "<img src = './befor.png'><br>";
imagetruecolortopalette($resource,false,255);
imagepng($resource , "./after.png");
imagedestroy($resource);
echo "<img src = './after.png'><br>";
どうすれば透過を保持したまま減色する事ができるのか、教えて
頂けたら光栄です。そもそもphpのGDを使ってというのは無理なの
でしょうか?
他の言語を含め、何か方法があれば教えて下さい。
よろしくお願いします。
![「こんばんわ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/806222_5497bffaeae01/M.jpg)
No.1ベストアンサー
- 回答日時:
imagetruecolortopaletteは、透過色を保持したまま、減色するということは出来なさそうです。
やるとすれば、減色を行う前に、
imagecolortransparent
http://jp2.php.net/manual/ja/function.imagecolor …
で、透過色のIDを取得して、
imagecolorsforindex
http://jp2.php.net/manual/ja/function.imagecolor …
で、透過色のIDに指定されている色情報を取得しておいて
その後に、imagetruecolortopaletteで、減色して、
imagecolorsforindex関数で取得した色配列を、
imagecolorexact
http://jp2.php.net/manual/ja/function.imagecolor …
で、減色後の画像から探してきて、
存在してたら
imagecolortransparentで再設定する、って感じじゃないですかね。
<?php
$resource = imagecreatefrompng($pngimg);
$trns = imagecolortransparent($resource);
$col = null;
if($trns > 0){
$col = imagecolorsforindex($resource, $trns);
}
imagetruecolortopalette($resource, false, 255);
if($col !== null){
$id = imagecolorexact($resource, $col['red'], $col['green'], $col['blue']);
if($id != -1){
imagecolortransparent($resource, $id);
}
}
?>
といった感じでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- 画像編集・動画編集・音楽編集 画質を落とさず切り取って透過したいです 2 2022/06/08 12:28
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS 角丸画像の背景色を透明にしたいです 1 2023/06/23 23:15
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- UNIX・Linux zshの文字列置換機能 5 2023/07/23 18:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
VBSの「MsgBox」について
-
GDI+を使ったビット数とDPIの扱い
-
ウィンドウサイズを取得して、p...
-
Excelに画像挿入
-
アップロードされたファイルを...
-
ファイルアップ時のファイル名
-
画像だけアップロードされません。
-
php、JDライブラリを用いて画像...
-
C# Excelファイルへの画像挿入。
-
Borland C++ Builder
-
ホープページの表示速度が遅い。。
-
【BAT(バッチ)ファイル】Web...
-
PHP8を使うと、大量のWarningが...
-
onedrive にexcelファイルをア...
-
文字化けに関して
-
ヒアドキュメントを中断してinc...
-
文字化けについて
-
FORMで送信ボタンと戻るボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
透過PNGが透過されない!!
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
C# Excelファイルへの画像挿入。
-
VBAでJPGサイズ変更
-
SQLiteに画像を格納したい
-
iphoneで虫眼鏡の作り方
-
PHP MySQLに画像を直接保存
-
Illustratorで文字と画像を流し...
-
openCVの超解像処理
-
ChatGPTに作らせたい Excel VBA
-
PHPで吐き出した画像にリンクを...
-
pictureboxに表示した画像のフ...
-
PHPによる画像の生成による色の...
-
GDI+を使ったビット数とDPIの扱い
-
ウィンドウサイズを取得して、p...
-
BLOBデーターの画像の表示方法...
-
OpenGLで描いて画像ファイル出力
-
ビットマップ画像を読み込むプ...
-
ImageTTFTextで保存すると文字...
おすすめ情報