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

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

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

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

Q&A

1回答

2170閲覧

画像をアップロードして、類似画像を表示(実行結果が表示されない)

yayanOriya

総合スコア7

PHP

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

1グッド

0クリップ

投稿2016/03/08 07:32

編集2016/03/08 07:55

下記のindex.phpにて画像をアップロードして、

PHP

1<form action="gu.php" method="post" enctype="multipart/form-data"> 2<input type="file" size="40" name="upfile" value=""> 3<input type="submit" value="アップロード"> 4</form>

下記のgu.phpにてアップロードした画像の類似画像を表示させるプログラムを組んでいます。しかし、アップロードした画像の情報だけ返され処理したい31行からのコードが反映されません。
どなたかご教示いただければ幸いです。宜しくお願いします。

PHP

1<html> 2<head> 3<?php 4 5$mode = 'single'; 6$imagePath =@$_FILES["upfile"]["name"]; 7$imageSize=@$_FILES["upfile"]["size"]; 8$updir = "./upload_files"; 9$tmp_file = @$_FILES['upfile']['tmp_name']; 10$URL="/upload_files/"; 11ini_set('display_errors', 1); 12ini_set('error_reporting', E_ALL); 13 14 15$filepath = "sample.jpg"; 16$dir= "add/"; 17$sample = load_image($filepath); 18$sample_lab=image_lab($sample); 19imagedestroy($sample); 20 21$list = scandir($dir); 22 23$files = array(); 24foreach($list as $value){ 25 if(is_file($dir . $value)){ 26 $files[] = $dir . $value; 27 } 28} 29$diff = array(); 30foreach($files as $file){ 31 $image = load_image($file); 32 $lab = image_lab($image); 33 imagedestroy($image); 34 35 $name = basename($file); 36 37 $distance = 0; 38 foreach($sample_lab as $key => $value){ 39 $distance += lab_distance($value, $lab[$key]); 40 } 41 $diff[$name] = $distance; 42} 43 44asort($diff); 45$result = array_keys($diff); 46header("Content-type: text/html;charset=utf-8"); 47foreach($result as $img){ 48 echo '<img src="' . $dir . $img . '" width="50" height="50" alt="" />'; 49} 50 51function load_image($filepath){ 52 $checkimg = getimagesize($filepath); 53 if($checkimg['mime'] == "image/jpeg" || $checkimg['mime'] == "image/pjpeg"){ 54 $extension = "jpg"; 55 } else if ($checkimg['mime'] == "image/gif"){ 56 $extension = "gif"; 57 } else if ($checkimg['mime'] == "image/png" || $checkimg['mime'] == "image/x-png"){ 58 $extension = "png"; 59 } else { 60 exit; 61 } 62 63 if($extension == 'jpg'){$image = ImageCreateFromJPEG($filepath);} 64 if($extension == 'gif'){$image = ImageCreateFromGIF($filepath);} 65 if($extension == 'png'){$image = ImageCreateFromPNG($filepath);} 66 67 return $image; 68} 69function image_lab($image){ 70 $width = imagesx($image); 71 $height = imagesy($image); 72 73 $thumb_width = 4; 74 $thumb_height = 4; 75 $thumb = imagecreatetruecolor($thumb_width, $thumb_height); 76 imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); 77 78 $lab = array(); 79 $red = 0; 80 $green = 0; 81 $blue = 0; 82 83 for($x=0; $x < $thumb_width; $x++){ 84 for($y=0; $y < $thumb_height; $y++){ 85 $index = imagecolorat($thumb, $x, $y); 86 $rgb = imagecolorsforindex($thumb, $index); 87 $lab[] = rgb2lab( array($rgb['red'], $rgb['green'], $rgb['blue']) ); 88 } 89 } 90 91 return $lab; 92} 93function xyz2lab($xyz) { 94 $threshold = 0.008856; 95 96 $ref_x = 0.96422; 97 $ref_y = 1.0000; 98 $ref_z = 0.82521; 99 100 $var_x = $xyz[0] / ($ref_x * 100); 101 $var_y = $xyz[1] / ($ref_y * 100); 102 $var_z = $xyz[2] / ($ref_z * 100); 103 104 $var_x = ($var_x > $threshold) ? $var_x = pow($var_x, 1/3 ) : (7.787 * $var_x) + (16 / 116); 105 $var_y = ($var_y > $threshold) ? $var_y = pow($var_y, 1/3 ) : (7.787 * $var_y) + (16 / 116); 106 $var_z = ($var_z > $threshold) ? $var_z = pow($var_z, 1/3 ) : (7.787 * $var_z) + (16 / 116); 107 108 109 $l = ( 116 * $var_y ) - 16; 110 $a = 500 * ( $var_x - $var_y ); 111 $b = 200 * ( $var_y - $var_z ); 112 $lab = array(); 113 114 $lab = array($l, $a, $b); 115 116 return $lab; 117} 118function rgb2xyz($rgb) { 119 $r = $rgb[0] / 255; 120 $g = $rgb[1] / 255; 121 $b = $rgb[2] / 255; 122 123 $r = ($r > 0.04045) ? pow(($r + 0.055) / 1.055, 2.4) : $r / 12.92; 124 $g = ($g > 0.04045) ? pow(($g + 0.055) / 1.055, 2.4) : $g / 12.92; 125 $b = ($b > 0.04045) ? pow(($b + 0.055) / 1.055, 2.4) : $b / 12.92; 126 127 $r = $r * 100; 128 $g = $g * 100; 129 $b = $b * 100; 130 131 $xyz = array(); 132 133 //sRGB D50 134 $xyz[] = $r * 0.4360747 + $g * 0.3850649 + $b * 0.1430804; 135 $xyz[] = $r * 0.2225045 + $g * 0.7168786 + $b * 0.0606169; 136 $xyz[] = $r * 0.0139322 + $g * 0.0971045 + $b * 0.7141733; 137 return $xyz; 138} 139function rgb2lab($rgb) { 140 $xyz = rgb2xyz($rgb); 141 $lab = xyz2lab($xyz); 142 return $lab; 143} 144function lab_distance($p1, $p2){ 145 $dist = sqrt( pow($p2[0] - $p1[0], 2) + pow($p2[1] - $p1[1], 2) + pow($p2[2] - $p1[2], 2) ); 146 return $dist; 147} 148?> 149</body> 150</html>
naoyan👍を押しています

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

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

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

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

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

dupont_kedama

2016/03/08 07:40

全部はみてないですが、とりあえず15行目 「$filepath = "$URL" . $copy_file . ";」閉じがおかしいですよ。
yayanOriya

2016/03/08 07:55

ご指摘ありがとうございます!修正をさせていただきましたm--m
guest

回答1

0

アップロードした画像ファイルは処理が終わると消えるんですが、移動させてますか?
move_upload_file()をつかって明示的に移動させるとよいかも。

投稿2016/03/10 06:21

ogaaaan

総合スコア765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問