ホームページ バックエンド開発 PHPチュートリアル 超级好用的一个php上传图片类(随机名,缩略图,加水印)_PHP

超级好用的一个php上传图片类(随机名,缩略图,加水印)_PHP

Jun 01, 2016 pm 12:17 PM
画像をアップロードする 透かしを追加する サムネイル

Upimages.class.php php上传类
复制代码 代码如下:
class UpImages {
var $annexFolder = "upload";//附件存放点,默认为:annex
var $smallFolder = "small";//缩略图存放路径,注:必须是放在 $annexFolder下的子目录,默认为:smallimg
var $markFolder = "mark";//水印图片存放处
var $upFileType = "jpg gif png";//上传的类型,默认为:jpg gif png rar zip
var $upFileMax = 1024;//上传大小限制,单位是“KB”,默认为:1024KB
var $fontType;//字体
var $maxWidth = 500; //图片最大宽度
var $maxHeight = 600; //图片最大高度
function UpImages($annexFolder,$smallFolder,$includeFolder) {
$this->annexFolder = $annexFolder;
$this->smallFolder = $smallFolder;
$this->fontType = $includeFolder."/04B_08__.TTF";
}
function upLoad($inputName) {
$imageName = time();//设定当前时间为图片名称
if(@empty($_FILES[$inputName]["name"])) die("没有上传图片信息,请确认");
$name = explode(".",$_FILES[$inputName]["name"]);//将上传前的文件以“.”分开取得文件类型
$imgCount = count($name);//获得截取的数量
$imgType = $name[$imgCount-1];//取得文件的类型
if(strpos($this->upFileType,$imgType) === false) die(error("上传文件类型仅支持 ".$this->upFileType." 不支持 ".$imgType));
$photo = $imageName.".".$imgType;//写入数据库的文件名
$uploadFile = $this->annexFolder."/".$photo;//上传后的文件名称
$upFileok = move_uploaded_file($_FILES[$inputName]["tmp_name"],$uploadFile);
if($upFileok) {
$imgSize = $_FILES[$inputName]["size"];
$kSize = round($imgSize/1024);
if($kSize > ($this->upFileMax*1024)) {
@unlink($uploadFile);
die(error("上传文件超过 ".$this->upFileMax."KB"));
}
} else {
die(error("上传图片失败,请确认你的上传文件不超过 $upFileMax KB 或上传时间超时"));
}
return $photo;
}
function getInfo($photo) {
$photo = $this->annexFolder."/".$photo;
$imageInfo = getimagesize($photo);
$imgInfo["width"] = $imageInfo[0];
$imgInfo["height"] = $imageInfo[1];
$imgInfo["type"] = $imageInfo[2];
$imgInfo["name"] = basename($photo);
return $imgInfo;
}
function smallImg($photo,$width=128,$height=128) {
$imgInfo = $this->getInfo($photo);
$photo = $this->annexFolder."/".$photo;//获得图片源
$newName = substr($imgInfo["name"],0,strrpos($imgInfo["name"], "."))."_thumb.jpg";//新图片名称
if($imgInfo["type"] == 1) {
$img = imagecreatefromgif($photo);
} elseif($imgInfo["type"] == 2) {
$img = imagecreatefromjpeg($photo);
} elseif($imgInfo["type"] == 3) {
$img = imagecreatefrompng($photo);
} else {
$img = "";
}
if(empty($img)) return False;
$width = ($width > $imgInfo["width"]) ? $imgInfo["width"] : $width;
$height = ($height > $imgInfo["height"]) ? $imgInfo["height"] : $height;
$srcW = $imgInfo["width"];
$srcH = $imgInfo["height"];
if ($srcW * $width > $srcH * $height) {
$height = round($srcH * $width / $srcW);
} else {
$width = round($srcW * $height / $srcH);
}
if (function_exists("imagecreatetruecolor")) {
$newImg = imagecreatetruecolor($width, $height);
ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
} else {
$newImg = imagecreate($width, $height);
ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
}
if ($this->toFile) {
if (file_exists($this->annexFolder."/".$this->smallFolder."/".$newName)) @unlink($this->annexFolder."/".$this->smallFolder."/".$newName);
ImageJPEG($newImg,$this->annexFolder."/".$this->smallFolder."/".$newName);
return $this->annexFolder."/".$this->smallFolder."/".$newName;
} else {
ImageJPEG($newImg);
}
ImageDestroy($newImg);
ImageDestroy($img);
return $newName;
}
function waterMark($photo,$text) {
$imgInfo = $this->getInfo($photo);
$photo = $this->annexFolder."/".$photo;
$newName = substr($imgInfo["name"], 0, strrpos($imgInfo["name"], ".")) . "_mark.jpg";
switch ($imgInfo["type"]) {
case 1:
$img = imagecreatefromgif($photo);
break;
case 2:
$img = imagecreatefromjpeg($photo);
break;
case 3:
$img = imagecreatefrompng($photo);
break;
default:
return False;
}
if (empty($img)) return False;
$width = ($this->maxWidth > $imgInfo["width"]) ? $imgInfo["width"] : $this->maxWidth;
$height = ($this->maxHeight > $imgInfo["height"]) ? $imgInfo["height"] : $this->maxHeight;
$srcW = $imgInfo["width"];
$srcH = $imgInfo["height"];
if ($srcW * $width > $srcH * $height) {
$height = round($srcH * $width / $srcW);
} else {
$width = round($srcW * $height / $srcH);
}
if (function_exists("imagecreatetruecolor")) {
$newImg = imagecreatetruecolor($width, $height);
ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
} else {
$newImg = imagecreate($width, $height);
ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);
}

$white = imageColorAllocate($newImg, 255, 255, 255);
$black = imageColorAllocate($newImg, 0, 0, 0);
$alpha = imageColorAllocateAlpha($newImg, 230, 230, 230, 40);
ImageFilledRectangle($newImg, 0, $height-26, $width, $height, $alpha);
ImageFilledRectangle($newImg, 13, $height-20, 15, $height-7, $black);
ImageTTFText($newImg, 4.9, 0, 20, $height-14, $black, $this->fontType, $text[0]);
ImageTTFText($newImg, 4.9, 0, 20, $height-6, $black, $this->fontType, $text[1]);
if($this->toFile) {
if (file_exists($this->annexFolder."/".$this->markFolder."/".$newName)) @unlink($this->annexFolder."/".$this->markFolder."/".$newName);
ImageJPEG($newImg,$this->annexFolder."/".$this->markFolder."/".$newName);
return $this->annexFolder."/".$this->markFolder."/".$newName;
} else {
ImageJPEG($newImg);
}
ImageDestroy($newImg);
ImageDestroy($img);
return $newName;
}
}
?>

使用方法
复制代码 代码如下:
include 'Upimages.class.php';
$max="upload"; //文件上传路径
$mix="small"; //缩略图路径(必须在upload下建立)
$mark="mark"; //加水引的图片存放路径
$text = array("oktang","2012"); //水印内容
$img= new UpImages($max,$mix,$max); //实例化类文件
$photo = $img->upLoad("file"); //上传的文件域
$img->maxWidth = $img->maxHeight = 600; //设置高,和宽
$img->toFile = true;
$newSmallImg = $img->smallImg($photo);
$newMark = $img->waterMark($photo,$text);
echo $newSmallImg;
echo $newMark;
echo "超级好用的一个php上传图片类(随机名,缩略图,加水印)_PHP

";
echo "超级好用的一个php上传图片类(随机名,缩略图,加水印)_PHP

";

注意里面有个字体文件,大家可以从网上下载。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Win11 でタスクバーのサムネイル プレビューを無効にする方法は? マウスを移動してタスクバー アイコンのサムネイル表示テクニックをオフにする Win11 でタスクバーのサムネイル プレビューを無効にする方法は? マウスを移動してタスクバー アイコンのサムネイル表示テクニックをオフにする Feb 29, 2024 pm 03:20 PM

この記事では、Win11システムでタスクバーアイコンをマウスで移動したときに表示されるサムネイル機能をオフにする方法を紹介します。この機能はデフォルトでオンになっており、ユーザーがタスクバー上のアプリケーション アイコンの上にマウス ポインタを置くと、アプリケーションの現在のウィンドウのサムネイルが表示されます。ただし、一部のユーザーは、この機能があまり役に立たない、またはエクスペリエンスに悪影響を与えると感じ、オフにしたい場合があります。タスクバーのサムネイルは楽しい場合もありますが、気が散ったり煩わしい場合もあります。この領域にマウスを移動する頻度を考えると、重要なウィンドウを誤って閉じてしまったことが何度かある可能性があります。もう 1 つの欠点は、より多くのシステム リソースを使用することです。そのため、リソース効率を高める方法を探している場合は、それを無効にする方法を説明します。しかし

Windows 11 22H2 でフォルダーのサムネイルをカスタマイズする方法 Windows 11 22H2 でフォルダーのサムネイルをカスタマイズする方法 Apr 30, 2023 pm 04:52 PM

Windows 1122H2 は、Windows 11 の最初の機能アップデートであり、大量の新機能と切望されている改善点をもたらします。改善点の 1 つは、フォルダー内のファイルのフォルダー サムネイルをプレビューできる機能です。 Windows 11 のフォルダーのサムネイルの外観が気に入らない場合は、次の方法で変更できます。 Windows 11 のフォルダー サムネイル用のカスタム アイコンのセット (Reddit の LEXX911 提供)。プレビューを拡大したり、フォルダー アイコンのスタイルを変更したりできます。個々のファイルのプレビューを扱う必要はありますが (たとえば、Windows 7 では、フォルダーのサムネイルに複数の画像を同時に表示できます)、プレビューをより大きくしてより便利にすることができます。重要なヒント:

Vscode でサムネイルを表示する方法_Vscode でサムネイルを表示する方法 Vscode でサムネイルを表示する方法_Vscode でサムネイルを表示する方法 Apr 02, 2024 pm 02:43 PM

1. まずVisual Studio Codeを入力し、左上の[ファイル]をクリックします。 2. [環境設定]をクリックします。 3. [設定]項目をクリックします。 4. [テキストエディタ-サムネイル]をクリックします。 5. 最後に、サムネイル項目の[サムネイルを表示するかどうか制御]をオンにします。

USBドライブ上のサムネイルを表示する方法 USBドライブ上のサムネイルを表示する方法 Feb 12, 2024 pm 08:36 PM

私は、重要なときにコンピューターのちょっとした問題が非常に困るというお客様によく遭遇します。まとめると以下のようなものがあります。ファイルを USB フラッシュ ドライブにコピーできない理由は、USB フラッシュ ドライブのパーティション形式が NTFS ではなく FAT32 である可能性があります。大きなファイルをコピーできるように、USB フラッシュ ドライブのパーティション形式を NTFS に変更してみてください。次に、画像はサムネイルとして表示されないため、画像を 1 つずつクリックして見つける必要があります。 3 番目のタイプは、ページが突然大きくなったり、小さくなったりすることです。これら 3 つの状況が分からない場合でも、いくつかの簡単な操作で解決できます。 1. U ディスクのパーティションを NTFS に変更します 新しく購入した U ディスクのデフォルトのパーティション形式は通常 FAT32 であり、通常の状況では問題なく使用できます。ただし、4G を超えるファイルをコピーする必要がある場合、コピーできないプロンプトが表示され、使用するのに少し苦労します。のために

JavaScriptを使用した自動サムネイル生成 JavaScriptを使用した自動サムネイル生成 Jun 16, 2023 pm 12:51 PM

インターネットの発展に伴い、Web ページに写真は欠かせないものになりました。しかし、画像の数が増えると、画像の読み込み速度が非常に重要な問題になります。この問題を解決するために、多くの Web サイトではサムネイルを使用して画像を表示していますが、サムネイルを生成するには専門的な画像処理ツールを使用する必要があり、専門家以外の人にとっては非常に面倒です。その場合、JavaScript を使用してサムネイルの自動生成を実現するのが良い選択になります。 JavaSの使い方

PHPでサムネイルを生成する手順の詳細な説明 PHPでサムネイルを生成する手順の詳細な説明 Sep 13, 2023 am 08:40 AM

PHP でサムネイルを生成する手順の詳細な説明、具体的なコード例が必要です。インターネットが急速に発展している今日の時代では、写真は Web ページに不可欠な部分ですが、高解像度の写真は多くの帯域幅を占有するだけでなく、ユーザーの Web ページの読み込み速度にも影響します。したがって、多くの場合、画像サイズとファイル サイズを削減するために、元の画像からサムネイルを生成する必要があります。人気のあるサーバー側スクリプト言語として、PHP はサムネイルの生成に使用できる豊富な画像処理機能を提供します。 PHPでサムネイルを生成する手順を詳しく紹介します。

美しい写真にウォーターマークを追加する方法 美しい写真にウォーターマークを追加する方法 Apr 08, 2024 pm 03:52 PM

1. MeituXiuXiuの[画像美化]機能で、ウォーターマークを追加したい画像をアップロードまたは選択します。 2. 下部ツールバーの[テキスト]オプションをクリックし、透かしの内容を入力し、色、サイズ、透明度を調整します。 3. ウォーターマークの大きさや位置を調整し、問題がないことを確認したら[完了]をクリックして編集を確定します。 4. 最後に右上の[保存]ボタンをクリックしてウォーターマーク入りの画像を保存します。

Powerpoint プレゼンテーションに表を挿入する方法 Powerpoint プレゼンテーションに表を挿入する方法 Apr 13, 2023 pm 10:37 PM

PowerPoint プレゼンテーションの表は、プレゼンテーション時にデータを構造化された形式で表示するのに役立ちます。表に示されている数字は、視聴者により良い影響を与えます。 Microsoft Powerpoint には、プレゼンテーションに表を追加するいくつかの方法があります。新しいテーブルを追加するか、Excel や Word などの別のアプリケーションの既存のテーブルからコピーするかを選択できます。方法 1: グリッド上の行と列を選択して表を挿入します。 ステップ 1: PowerPoint のサムネイルで、マスター スライドを右クリックし、[新しいスライド] を選択します。ステップ 2: [挿入] に移動し、[テーブル] をクリックします。ステップ 3: ドロップダウン メニューから、テーブルに必要な行と列の合計数を選択します。知らせ

See all articles