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>
markdown 使ってコードは整形済みテキストで投稿してください。
見辛過ぎます。
どういう画像に対してどういう結果になったのか画面キャプチャなどご提示ください。
縦長、横長、正方形等パターンは試しましたか?
ソースコードを拝借して試してみると、こちらでは切れておりませんでした。
元画像の情報も添えていただくと、なにか見えてくるかもしれません。
あとJPEGですが、向きがあります。
たとえばスマホを縦にして撮影し、スマホで見ると縦の写真になっていても、PCでみると横になっている場合があります。
(画像ビュワーが縦横の情報を考慮していれば、写した通りに表示されると思います)
そこらへんもご確認ください。
回答1件
あなたの回答
tips
プレビュー