php 複数ファイルのアップロード (画像にウォーターマークを追加する例)
php チュートリアル 複数ファイルのアップロード (画像にウォーターマークを追加する例)
<本文>
< html xmlns="http://www.bkjia.com/1999/xhtml">php 複数ファイルアップロード(画像に透かしを入れる例)
< ;?php
if($_post['sub']=="www")
{
$waterimg="water.png";
$ftype=array('image/jpg' ,'image/jpeg','image/png','image/pjpeg','image/gif');//アップロードできるファイルの種類
$files=$_files['files'];
$fnum= count($files['name'] ); //アップロードされたファイルの数を取得します
for($i=0;$i{
if($files['name'][ $i]!=''&&is_uploaded_file($ files['tmp_name'][$i]))
{
if(in_array($files['type'][$i],$ftype))//ファイルは許可されたタイプです
{
$ fname[$i]='upfile/'.rand(0,10000).time().substr($files['name'] [$i],strrpos($ files['name'][$i], '.'));//自動命名
move_uploaded_file($files['tmp_name'][$i],$fname[$i]);
echo '
ファイルが正常にアップロードされました。 ';
}
else
{
echo '
許可されていないファイル タイプです! ';
exit;
}
}
else
{
echo '
ファイルが存在しません! ';
exit;
}
watermark($fname[$i],$waterimg);
}
$string=implode('|',$fname);
echo $string
}
?>
別のアップロード
/**
* 画像にウォーターマークを追加します
* @param string $desimg ターゲット画像パラメーターの形式は ./images/pic.jpg です
* @param string $waterimg ウォーターマーク画像パラメーターの形式は上記と同じです、ウォーターマーク画像はpng形式で背景は透過です
* @param int positon ウォーターマークの位置 1:左上 2:右上 3:中央 4:左下 5:右下
* @param bool $saveas 名前を付けて保存するかどうか、デフォルト値false は、元の画像が上書きされることを意味します
* @ param int $alpha 透かし画像の不透明度
* @return string $savepath 新しい画像のパス
* **/
function Watermark($desimg,$waterimg,$positon=1,$saveas=false,$alpha=30)
{
//対象画像の基本情報を取得
$temp=pathinfo($desimg) ;
$name=$temp["basename"];//ファイル名
$path=$temp["dirname"];//ファイルがあるフォルダー
$extension=$temp["extension"]; // ファイル拡張子
if($saveas)
{
// として保存する必要があります
$name=rtrim($name,".$extension")."_2.";// 最初から名前を付けます
$savepath=$ path." /".$name.$extension;
}
else
{
//名前を付けて保存する必要がない場合は、元の画像が隠れます
$savepath=$path."/".$name ;
}
$info=getimageinfo($ desimg);//対象画像の情報を取得
$info2=getimageinfo($waterimg);//ウォーターマーク画像の情報を取得
$desimg=create($desimg) ;//元の画像から作成
$waterimg=create($waterimg);//透かし画像から作成
//位置1:左上
if($positon==1)
{
$x=0;
$y=0;
}
//位置 2: 左上右
if($positon==2)
{
$x=$info[0]-$info2[0];
$y=0;
}
//位置 3: 中央
if($positon== 3)
{
$x=($info[0]-$info2[0])/2;
$y=($info[1]- $info2[1])/2;
}
//位置 4: 左下
if($positon==4)
{
$x=0;
$y=$info[1]-$info2[1];
}
//位置 5:右下
if($positon==5)
{
$x=$info[0]-$info2[0];
$y=$info[1]-$info2[1];
}
imagecopymerge ( $desimg,$waterimg,$x,$y,0,0,$info2[0],$info2[1],$alpha);
imagejpeg($desimg,$savepath);
imagedestroy($desimg); imagedestroy($waterimg);
return $savepath;
}
/**
* 画像情報、幅、高さ、画像/タイプを取得します
* @param string $src 画像パス
* @return array
* **/
function getimageinfo($src)
{
return getimagesize($src);
}
/**
* 画像を作成し、リソースタイプを返します
* @param string $src 画像パス
* @return resource $im リソースタイプを返します
* ** /
関数 create($src)
{
$info=getimageinfo($src);
switch ($info[2])
{
ケース 1:
$im=imagecreatefromgif($src);
break;
ケース 2 :
$im=imagecreatefromjpeg($src);
break;
ケース 3:
$im=imagecreatefrompng($src);
break;
}
return $im;
}
?>