質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1845閲覧

PHP GDでリサイズした時の背景色

popopop

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/12/04 14:46

GDでリサイズした時に背景が黒になってしまいます
これを透明にできますか?
いろいろ調べてみてもわかりませんでした

php

1 2if (isset($_POST["send"])) { 3 $file = $_FILES['fname']['tmp_name']; 4 5 6 $date= getimagesize($file); 7 8 9 list($width, $hight)=$date; 10 11 if ($width <= 100 && $hight <= 200) { 12 $nw = $width; 13 $nh = $hight; 14 } 15 else{ 16 $w = $width / 100; 17 $h = $hight / 200; 18 19 if ($w > $h) { 20 $nw = $width / $w; 21 $nh = $hight / $w; 22 } elseif ($w < $h) { 23 $nw = $width / $h; 24 $nh = $hight / $h; 25 } 26 27 var_dump($nw); 28 var_dump($nh); 29 $nx = (100-$nw) / 2; 30 $ny = (200-$nh) / 2; 31 } 32 33 34 //JPG 35 if ($date[2] == 2) { 36 $img_in = imagecreatefromjpeg($file); 37 $img_out = imagecreatetruecolor(100, 200); 38 39 imagealphablending($img_out, false); 40 imagesavealpha($img_out, true); 41 42 43 44 imagecopyresampled($img_out, $img_in, $nx, $ny, 0, 0, $nw, $nh, $width, $hight); 45 46 $filename = 'jpeg'; 47 48 imagejpeg($img_out, "images/new.jpeg"); 49 } 50 51//PNG 52 elseif ($date[2] == 3) { 53 54 $img_in = imagecreatefrompng($file); 55 $img_out = imagecreatetruecolor(100, 200); 56 57 58 59 imagealphablending($img_out, false); 60 imagesavealpha($img_out, true); 61 62 63 64 imagecopyresampled($img_out, $img_in, $nx, $ny, 0, 0, $nw, $nh, $width, $hight); 65 66 67 68 69 $filename = 'png'; 70 71 imagepng($img_out, 'images/new.png'); 72 } 73 74 75 //GIF 76 elseif($date[2] == 1){ 77 $img_in = imagecreatefromgif($file); 78 $img_out = imagecreatetruecolor(100, 200); 79 80 imagealphablending($img_out, false); 81 imagesavealpha($img_out, true); 82 83 84 imagecopyresampled($img_out, $img_in, $nx, $ny, 0, 0, $nw, $nh, $width, $hight); 85 86 87 $filename = 'gif'; 88 imagegif($img_out, "images/new.gif"); 89 } 90 91 92 93 imagedestroy($img_in); 94 imagedestroy($img_out);

html

1<form action="" method="post" enctype="multipart/form-data"> 2 <input type="file" name="fname"> 3 <input type="submit" value="アップロード" name="send"> 4</form> 5<?php if(isset($img_out) && $filename == 'jpeg'){ 6 echo '<p><img src="images/new.jpeg" alt=""></p>'; 7 } ?> 8 9<?php if(isset($img_out) && $filename == 'png'){ 10 echo '<p><img src="images/new.png" alt=""></p>'; 11 } ?> 12<?php if(isset($img_out) && $filename == 'gif'){ 13 echo '<p><img src="images/new.gif" alt=""></p>'; 14 } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/12/05 00:37

「調べたけどわからなかった」は誰にも何の情報も伝えません(「うまくいかない」も同様) 投入したキーワードや参考にした記事など必ず記載してください
guest

回答1

0

単にimagecreatetruecolor()してしまうと、アルファチャンネル(透過情報)が失われてしまいます(黒ベースの画像を作ってしまう)。
imagealphablending()imagesavealpha()を用いて、適切に処理する必要があります。

GDで透過PNGを扱う。
【php】GD関数でpng画像を加工したら透明部分が透明でなくなった!

投稿2019/12/04 15:01

Takumiboo

総合スコア2534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takumiboo

2019/12/04 15:03

調べても分かりませんでした、とのことですが、私も調べたら回答のような情報が集まりました。 プログラミングなどの情報のほとんどはネットにあります。 調べるキーワードを工夫するなど、「ググる力」を伸ばすことも大切だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問