さまざまなカテゴリの画像をフォルダーに保存して取得しようとしています..画像を保存すると、画像に透かしが自動的に適用されます..これを使用しています。
<?php
if(isset($_POST['submit'])){
$cat=$_POST['cat'];
$fname= $_FILES["file"]["name"];
"Type: " . $_FILES["file"]["type"] . "<br />";
"Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
"stored in: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
"Stored in: " . "upload/" . $_FILES["file"]["name"];
echo 'image Save Successfully' ;
require_once( "watermark.php" );
$original_directory = "upload/";
$watermarked_images = "temp/";
if ($handle = opendir($original_directory))
{
while (false !== ($file = readdir($handle)))
{
if(!is_file($original_directory.$file))
continue;
if(exif_imagetype($original_directory.$file)==2)
{
watermark($original_directory.$file,"watermark.png",$watermarked_images.$file);
//echo "Done watermarking <b>".$file."</b><br>\n";
}
}
closedir($handle);
}
}
}
?>
そしてwatermark.phpは
<?php
function watermark($original_image,$original_watermark,$destination="")
{
$image=imagecreatefromjpeg($original_image);
list($imagewidth,$imageheight)=getimagesize($original_image);
$watermark = imagecreatefrompng($original_watermark);
list($watermarkwidth,$watermarkheight)=getimagesize($original_watermark);
if($watermarkwidth>$imagewidth || $watermarkheight>$imageheight)
{
$water_resize_factor = $imagewidth / $watermarkwidth;
$new_watermarkwidth = $watermarkwidth * $water_resize_factor;
$new_watermarkheight = $watermarkheight * $water_resize_factor;
$new_watermark = imagecreatetruecolor($new_watermarkwidth , $new_watermarkheight);
imagealphablending($new_watermark , false);
imagecopyresampled($new_watermark , $watermark, 0, 0, 0, 0, $new_watermarkwidth, $new_watermarkheight, $watermarkwidth, $watermarkheight);
$watermarkwidth = $new_watermarkwidth;
$watermarkheight = $new_watermarkheight;
$watermark = $new_watermark;
}
$startwidth = ($imagewidth - $watermarkwidth) / 2;
$startheight = ($imageheight - $watermarkheight) / 2;
imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight);
if(!empty($destination))
imagejpeg($image,$destination);
else
imagejpeg($image);
}
?>
一部の画像はアップロードフォルダーと一時フォルダーとデータベースにも保存され、透かしが適用されます..しかし、今、画像をアップロードしようとすると..アップロードフォルダーにのみ移動し、致命的なエラーが表示されます:-
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 15000 bytes) in D:\xampp\htdocs\looks\admin\watermark.php on line 28
どうすればこれを解決できますか..そして.PNG画像も保存されません