
image_testフォルダに、画像をリサイズして保存しています。
保存する時は、
$tmpName = $_FILES['image']['tmp_name'];
ではなく、年月日時分秒+ランダムな0~10000の値を画像名にするにはどうしたらよいか教えて下さい
$imagename = date("YmdHis") . rand(0,10000)
<?php
function uploadImage($tmpName, $dir, $maxWidth, $maxHeight){
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($tmpName);
if($mime == 'image/jpeg' || $mime == 'image/pjpeg'){
$ext = '.jpg';
$image1 = imagecreatefromjpeg($tmpName);
} elseif($mime == 'image/png' || $mime == 'image/x-png'){
$ext = '.png';
$image1 = imagecreatefrompng($tmpName);
} elseif($mime == 'image/gif'){
$ext = '.gif';
$image1 = imagecreatefromgif($tmpName);
} else {
return false;
}
list($width1, $height1) = getimagesize($tmpName);
if($width1 <= $maxWidth && $height1 <= $maxHeight){
$scale = 1.0;
} else {
$scale = min($maxWidth / $width1, $maxHeight / $height1);
}
$width2 = $width1 * $scale;
$height2 = $height1 * $scale;
$image2 = imagecreatetruecolor($width2, $height2);
if($ext == '.gif'){
$transparent1 = imagecolortransparent($image1);
if($transparent1 >= 0){
$index = imagecolorsforindex($image1, $transparent1);
$transparent2 = imagecolorallocate($image2, $index['red'], $index['green'], $index['blue']);
imagefill($image2, 0, 0, $transparent2);
imagecolortransparent($image2, $transparent2);
}
} elseif($ext == '.png'){
imagealphablending($image2, false);
$transparent = imagecolorallocatealpha($image2, 0, 0, 0, 127);
imagefill($image2, 0, 0, $transparent);
imagesavealpha($image2, true);
}
imagecopyresampled($image2, $image1, 0, 0, 0, 0, $width2, $height2, $width1, $height1);
if(!file_exists($dir)){
mkdir($dir, 0777, true);
}
$filename = sha1(microtime() . $_SERVER['REMOTE_ADDR'] . $tmpName) . $ext;
$saveTo = rtrim($dir, '/\\') . '/' . $filename;
if($ext == '.jpg'){
$quality = 80;
imagejpeg($image2, $saveTo, $quality);
} else if($ext == '.png'){
imagepng($image2, $saveTo);
} else if($ext == '.gif'){
imagegif($image2, $saveTo);
}
imagedestroy($image1);
imagedestroy($image2);
return $saveTo;
}
if($_SERVER["REQUEST_METHOD"] === 'POST'
&& !empty($_FILES['image']['tmp_name']))
{
$maxWidth = 300; // 最大幅
$maxHeight = 300; // 最大高さ
// 一時ファイルの場所
$tmpName = $_FILES['image']['tmp_name'];
// 保存先のディレクトリ
$dir = __DIR__ . '/image_test/';
$path = uploadImage($tmpName, $dir, $maxWidth, $maxHeight);
var_dump($path);
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>image</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="submit">
</form>
</body>
</html>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
$filename = sha1( … ) . $ext;
の部分をご提示の方式に変えれば良いかと
ただし、
ランダム値で命名するならば重複時の考慮は必要かと思います
例)
for ($n = 0; $n < 命名回数最大; $n++) {
_ $filename = ファイル命名();
_ if (!file_exists($dir . '/' . $filename)) break;
}
if ($n == 1000) die("命名ルールが破綻しているので再考を");
参考)
https://www.php.net/manual/ja/function.file-exis …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iphoneで虫眼鏡の作り方
-
Web画像コピー不可にする方法
-
画像の解像度を落とすプログラム
-
画像リストを作りたい
-
JavaScriptを使用せず画像をラ...
-
GIF以外の画像を。。。
-
PHP+PostgreSQLを使ってPDFファ...
-
画像表示で不正な理由がわからない
-
C#とJavaで、MP3タグの画像を表...
-
PostgreSQLのラージオブジェク...
-
imagejpegで表示されない。
-
5~10秒間隔で画像を表示する方法
-
gifアニメションの表示について
-
JSPにてMySQLのBLOB型の画像の...
-
★PHP?★画像を縦横比を変えずに...
-
拡張子php画像をjpg画像等に変...
-
VBAについて教えてください
-
画像アップロードの拡張子制限
-
DBに格納された画像データを縮...
-
PHP echo バックスラッシュの使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
Illustratorで文字と画像を流し...
-
php,mysqlにて画像パス保存/表...
-
透過PNGが透過されない!!
-
GDI+を使ったビット数とDPIの扱い
-
iphoneで虫眼鏡の作り方
-
SQLiteに画像を格納したい
-
PythonのTkinter詳しい方へ。画...
-
C# Excelファイルへの画像挿入。
-
VBAでJPGサイズ変更
-
ビットマップ画像を読み込むプ...
-
同階層にある画像ファイルの数...
-
BLOBデーターの画像の表示方法...
-
手作業で埋め込んだ、UserForm1...
-
imageフォルダに、画像をリサイ...
-
最も速い画像合成処理を教えて...
-
PHPで吐き出した画像にリンクを...
-
Apache,phpで画像が表示されない
-
phpMyAdminに画像を保存できない
おすすめ情報