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

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

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

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

Q&A

解決済

1回答

195閲覧

PHPでの画像のリサイズ

popopop

総合スコア11

PHP

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

0グッド

0クリップ

投稿2019/12/04 05:10

編集2019/12/04 05:41

PNG、GIF、JPEGの画像のリサイズで、PNGとGIFは動くんですがJPEGだけ見切れてしまいます
原因わかりますでしょうか?
いろいろ試した結果、どの拡張子でも縦長の画像だけwidthが見切れてしまいました
イメージ説明

php

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

html

1<!doctype html> 2<html> 3<HEAD> 4<META HTTP-EQUIV="content-type" content="text/html;charset=UTF-8"> 5 6<title></title> 7</HEAD> 8<body> 9 10<form action="" method="post" enctype="multipart/form-data"> 11 <input type="file" name="fname"> 12 <input type="submit" value="アップロード" name="send"> 13</form> 14<?php if(isset($img_out) && $filename == 'jpeg'){ 15 echo '<p><img src="images/new.jpeg" alt=""></p>'; 16 } ?> 17 18<?php if(isset($img_out) && $filename == 'png'){ 19 echo '<p><img src="images/new.png" alt=""></p>'; 20 } ?> 21<?php if(isset($img_out) && $filename == 'gif'){ 22 echo '<p><img src="images/new.gif" alt=""></p>'; 23 } ?> 24</body> 25</html>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/12/04 05:11 編集

markdown 使ってコードは整形済みテキストで投稿してください。 見辛過ぎます。
m.ts10806

2019/12/04 05:36

どういう画像に対してどういう結果になったのか画面キャプチャなどご提示ください。 縦長、横長、正方形等パターンは試しましたか?
XNXSXMXR

2019/12/04 06:06

ソースコードを拝借して試してみると、こちらでは切れておりませんでした。 元画像の情報も添えていただくと、なにか見えてくるかもしれません。 あとJPEGですが、向きがあります。 たとえばスマホを縦にして撮影し、スマホで見ると縦の写真になっていても、PCでみると横になっている場合があります。 (画像ビュワーが縦横の情報を考慮していれば、写した通りに表示されると思います) そこらへんもご確認ください。
guest

回答1

0

自己解決

if文の

php

1if ($width >= $hight) { 2 $nw = $width / $w; 3 $nh = $hight / $w; 4 } elseif ($width < $hight) { 5 $nw = $width / $h; 6 $nh = $hight / $h; 7 }

がif ($w > $h)でした

投稿2019/12/04 14:40

popopop

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問