導航:首頁 > 編程語言 > php圖片的函數

php圖片的函數

發布時間:2023-02-19 13:14:52

php獲取圖片解析度 顏色模式函數

$img_info = getimagesize('a.jpg');
print_r($img_info);

索引 0 包含圖像寬度的像素值,索引 1 包含圖像高度的像素值。索引 2 是圖像類型的標記:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。

channels 和 bits。channels 對於 RGB 圖像其值為 3,對於 CMYK 圖像其值為 4。bits 是每種顏色的位數。

㈡ php 實現上傳圖片至伺服器的函數

<form method=post action="upload.php" ENCTYPE="multipart/form-data">

<input type="file" name="upload_file">
<input type="submit" name="submit" value="上傳文件">

用PHP上傳時,需要對內容作詳細的檢查,例如是否容許讀寫文件,文件格式、文件大小是否在你指定的大小內等。

<?

$file_size_max = 1000000;

// 限制文件上傳最大容量(bytes)

$store_dir = "/public/www/upload/";

// 上傳文件的儲存位置

$accept_overwrite = true;

//允許讀寫文件

// 檢查文件大小

if ($upload_file_size > $file_size_max) {

echo "對不起,你的文件容量大於規定";

exit;

}

// 檢查讀寫文件

if (file_exists($store_dir . $upload_file_name) &&&& !$accept_overwrite) {

echo "文件已存在,不能再復制";

exit;

}

//復制文件到指定目錄

if (! @ ($upload_file,$store_dir . $upload_file_name)) {

echo "復制文件失敗";

exit;

}

echo "上傳文件完成";
?>

㈢ PHP 圖片處理函數imagecreatefromjpeg需要GD庫嗎

兩個函數imagesavealpha和imagealphablending即可達到效果
123456// 下面三行是重點,解決png、gif透明背景變黑色的問題imagesavealpha($im, true);imagealphablending($resize_im, false);//不合並顏色,直接用$im圖像顏色替換,包括透明色;imagesavealpha($resize_im, true);//不要丟了$resize_im圖像的透明色;imageresampled($resize_im, $im, 0, 0, 0, 0, $size, $size, $imginfo[0], $imginfo[1]);……此處省略n多代碼……

㈣ 誰有php批量處理圖片、圖片生成縮略圖、圖片添加水印的函數

//批量處理圖片、圖片生成縮略圖、圖片添加水印

$dir=opendir(dirname(__FILE__));
while(!!$_file=readdir($dir)){
list($filesname,$kzm)=explode(".",$_file);//獲取擴展名
if($kzm=="gif"or$kzm=="jpg"or$kzm=="JPG"or$kzm=="png"){
if(!makethumb("$_file","120","120","100")){
echo'執行成功!';
}else{
echo'執行失敗!';
}
}
}
closedir($dir);


/**
*處理縮略圖並添加水印函數
*@accesspubliuc
*@param$srcFile-----------圖片文件名
*@param$dstFile-----------另存的文件名
*@param$dstW-------------圖片保存的寬度
*@param$dstH--------------圖片保存的高度
*@param$rate---------------圖片保存的品質
*@param$markwords-----水印文字
*@param$markimage-----水印圖片
*@param使用方法makethumb("a.jpg","b.jpg","120","120","100");
*/
functionmakethumb($srcFile/*,$dstFile*/,$dstW,$dstH,$rate=100/*,$markwords=null,$markimage=null*/){

$data=GetImageSize($srcFile);
switch($data[2]){
case1:
$im=@ImageCreateFromGIF($srcFile);
break;
case2:
$im=@ImageCreateFromJPEG($srcFile);
break;
case3:
$im=@ImageCreateFromPNG($srcFile);
break;
}
if(!$im)returnFalse;
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$dstX=0;
$dstY=0;
if($srcW*$dstH>$srcH*$dstW){
$fdstH=round($srcH*$dstW/$srcW);
$dstY=floor(($dstH-$fdstH)/2);
$fdstW=$dstW;
}
else
{
$fdstW=round($srcW*$dstH/$srcH);
$dstX=floor(($dstW-$fdstW)/2);
$fdstH=$dstH;
}
$ni=ImageCreateTrueColor($dstW,$dstH);
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
$white=ImageColorAllocate($ni,255,255,255);
$black=ImageColorAllocate($ni,0,0,0);
imagefilledrectangle($ni,0,0,$dstW,$dstH,$white);//填充背景色
ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);
//if($markwords!=null){
//$markwords=iconv("gb2312","UTF-8",$markwords);
////轉換文字編碼
//ImageTTFText($ni,20,30,450,560,$black,"simhei.ttf",$markwords);//寫入文字水印,參數依次為,文字大小|偏轉度|橫坐標|縱坐標|文字顏色|文字類型|文字內容
//}elseif($markimage!=null){
//$wimage_data=GetImageSize($markimage);
//switch($wimage_data[2]){
//case1:
//$wimage=@ImageCreateFromGIF($markimage);
//break;
//case2:
//$wimage=@ImageCreateFromJPEG($markimage);
//break;
//case3:
//$wimage=@ImageCreateFromPNG($markimage);
//break;
//}
//image($ni,$wimage,500,560,0,0,88,31);//寫入圖片水印,水印圖片大小默認為88*31
//imagedestroy($wimage);
//}
$dstFile=$srcFile.'.gif';
ImageJpeg($ni,$dstFile,$rate);
//ImageJpeg($ni,$srcFile,$rate);
imagedestroy($im);
imagedestroy($ni);
}

㈤ 在php中圖像處理新建一個畫布用什麼函數

$newImage=imagecreatetruecolor($xSize,$ySize);
//增加一個白色的底,不然新建的畫布是黑色的
$white=imagecolorallocate($newImage,255,255,255);
imagefill($newImage,0,0,$white);

圖像處理也經常使用到imagemerge、getimagesize、imagecreatefromjpeg等函數,建議你看下這個鏈接,全是圖像處理的函數http://php.net/manual/zh/ref.image.php

㈥ php建空白圖像資源的函數有哪些

1、透明處理
PNG、jpeg透明色都正常,只有gif不正常
imagecolortransparent(resource image [,int color])//將某個顏色設置成透明色
imagecolorstotal()
imagecolorforindex();
2、圖片的裁剪
imageresized()
imageresampled();
3、加水印(文字、圖片)
字元串編碼轉換string iconv ( string $in_charset , string $out_charset , string $str )
4、圖片旋轉
imagerotate();//制定角度的圖片翻轉
5、圖片的翻轉
沿X軸 沿Y軸翻轉
6、銳化
imagecolorsforindex()
imagecolorat()

㈦ php用GD庫生成圖片用什麼函數能讓字旋轉跟傾斜

圖片的旋轉和翻轉也是Web項目中比較常見的功能,但這是兩個不同的概念,圖片的旋轉是按特定的角度來轉動圖片,而圖片的翻轉則是將圖片的內容按特定的方向對調。圖片翻轉需要自己編寫函數來實現,而旋轉圖片則可以直接藉助GD庫中提供的imagerotate()函數完成。該函數的原型如下所示:

復制代碼代碼如下:

resource imagerotate(resource src_im , float angle, int bgd_color [,int ignore_transpatrent])

該函數可以將src_im圖像用給定的angle角度旋轉,bgd_color指定了旋轉後沒有覆蓋到的部分的顏色。旋轉的中心是圖像的中心,旋轉後的圖像會按比例縮小以適合目標圖像的大小(邊緣不會被剪去)。如果ignore_transpatrent被設為非零值,則透明色會被忽略(否則會被保留)。下面以JPEG格式的圖片為例,聲明一個可以旋轉圖片的函數rotate(),代碼如下所示

㈧ php圖像生成函數imagecreatetruecolor和imagecreate的區別

resource imagecreatetruecolor ( int $x_size , int $y_size )
返回一個圖像標識符,代表了一幅大小為 x_size 和 y_size 的黑色圖像。
resource imagecreate ( int $x_size , int $y_size )
返回一個圖像標識符,代表了一幅大小為
兩者在改變背景顏色時有些區別:
imagecreatetruecolor需要用imagefill()來填充顏色
imagecreate()需要用imagecolorAllocate()添加背景色
php案例如下:

<?php$img = imagecreatetruecolor(100,100); //創建真彩圖像資源$color = imagecolorAllocate($img,200,200,200); //分配一個灰色imagefill($img,0,0,$color); // 從左上角開始填充灰色header('content-type:image/jpeg'); //jpg格式imagejpeg($img); //顯示灰色的方塊?>

<?php$img = imagecreate(100,100);imagecolorallocate($img,200,200,200);header('content-type:image/jpeg'); imagejpeg($img); ?>

http://www.phpddt.com/php/imagecreate.html

㈨ 求php圖片縮放處理函數

在PHP網站開發過程中,如果建立的網站涉及大量的圖片處理,必然涉及到圖片的上傳和縮放,保持圖片不失真,進行圖片縮放。使用之前需要下載安裝GD庫,以支持PHP圖片處理。下面結合代碼講解具體的PHP圖片縮放處理的思路。
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
$pic_width = imagesx($im);
$pic_height = imagesy($im);

if(($maxwidth && $pic_width > $maxwidth) ($maxheight && $pic_height > $maxheight))
{
if($maxwidth && $pic_width>$maxwidth)
{
$widthratio = $maxwidth/$pic_width;
$resizewidth_tag = true;
}

if($maxheight && $pic_height>$maxheight)
{
$heightratio = $maxheight/$pic_height;
$resizeheight_tag = true;
}

if($resizewidth_tag && $resizeheight_tag)
{
if($widthratio<$heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}

if($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;

$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;

if(function_exists("imageresampled"))
{
$newim = imagecreatetruecolor($newwidth,$newheight);
imageresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}
else
{
$newim = imagecreate($newwidth,$newheight);
imageresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}

$name = $name.$filetype;
imagejpeg($newim,$name);
imagedestroy($newim);
}
else
{
$name = $name.$filetype;
imagejpeg($im,$name);
}
}
參數說明:
$im 圖片對象,應用函數之前,需要用imagecreatefromjpeg()讀取圖片對象,如果PHP環境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
$maxwidth 定義生成圖片的最大寬度(單位:像素)
$maxheight 生成圖片的最大高度(單位:像素)
$name 生成的圖片名
$filetype 最終生成的圖片類型(.jpg/.png/.gif)
代碼注釋:
第3~4行:讀取需要縮放的圖片實際寬高
第8~26行:通過計算實際圖片寬高與需要生成圖片的寬高的壓縮比例最終得出進行圖片縮放是根據寬度還是高度進行縮放,當前程序是根據寬度進行圖片縮放。如果想根據高度進行圖片縮放,可以將第22行的語句改成$widthratio>$heightratio
第28~31行:如果實際圖片的長度或者寬度小於規定生成圖片的長度或者寬度,則要麼根據長度進行圖片縮放,要麼根據寬度進行圖片縮放。
第33~34行:計算最終縮放生成的圖片長寬。
第36~45行:根據計算出的最終生成圖片的長寬改變圖片大小,有兩種改變圖片大小的方法:ImageCopyResized()函數在所有GD版本中有效,但其縮放圖像的演算法比較粗糙。ImageCopyResamples(),其像素插值演算法得到的圖像邊緣比較平滑,但該函數的速度比ImageCopyResized()慢。
第47~49行:最終生成經過處理後的圖片,如果需要生成GIF或PNG,需要將imagejpeg()函數改成imagegif()或imagepng()
第51~56行:如果實際圖片的長寬小於規定生成的圖片長寬,則保持圖片原樣,同理,如果需要生成GIF或PNG,需要將imagejpeg()函數改成imagegif()或imagepng()。
特別說明:
GD庫1.6.2版以前支持GIF格式,但因GIF格式使用LZW演演算法牽涉專利權,因此在GD1.6.2版之後不支持GIF的格式。如果是WINDOWS的環境,只要進入PHP.INI文件找到extension=php_gd2.dll,將#去除,重啟APACHE即可。如果是Linux環境,又想支持GIF,PNG,JPEG,需要去下載libpng,zlib,以及freetype字體並安裝。
OK,PHP圖片壓縮函數完成,最後概述一下整個處理的思路:
通過計算實際圖片的長寬與規定生成圖片的長寬之間的縮放比例,根據實際的需求(按照寬度還是按照高度進行圖片縮放)計算出最終生成圖片的大小,然後應用PHP圖片處理函數對圖片進行處理,最後輸出圖片。
以上就是關於PHP圖片處理中如何對圖片進行壓縮並保持不失真的函數說明。

㈩ php 編寫 實現上傳圖片至伺服器的函數

<?php
classFileUpload{
private$filepath;//指定上傳文件保存的路徑
private$allowtype=array("gif","jpg","jpeg","png");//允許上傳文件的類型
private$maxsize=1000000;//允許上傳文件的最大值
private$israndname=true;//是否隨機重命名,
private$originName;//源文件名字
private$tmpFileName;//臨時文件名字
private$fileType;//上傳後的文件類型,主要是文件後綴名
private$fileSize;//文件尺寸
private$newFileName;//新文件名字
private$errorName=0;//錯誤號
private$errorMess="";//用來提供錯誤報告
//用於對上傳文件初始化
//指定上傳路徑2·允許的類型3·限制大小4·是否使用隨機文件名稱
//讓用戶可以不用換位置傳參數,後面參數給值不用按照位置或者必須有值
function__construct($options=array()){
foreach($optionsas$key=>$val){
$key=strtolower($key);
//查看用戶參數中的數組下標是否和成員屬性名相同
//get_class_vars(get_class($this))得到類屬性的數組
//如果$key下標不在這個類屬性的數組中,則退出for循環
if(!in_array($key,get_class_vars(get_class($this)))){
continue;
}
$this->setOption($key,$val);
}
}
privatefunctionsetOption($key,$val){
//讓實例化後獲取過來的數組下標=數組下標的值,這里即為構造函數初始化
//構造函數中調用,等於把所有屬性初始化,將來可以直接訪問
$this->$key=$val;
}

privatefunctiongetError(){
$str="上傳文件{$this->originName}時出錯";
switch($this->errorNum){
case4:$str.="沒有文件被上傳";
break;
case3:$str.="文件只有部分上傳";
break;
case2:$str.="上傳文件超過了表單的值";
break;
case1:$str.="上傳文件超過phpini的值";
break;
case-1:$str.="未允許的類型";
break;
case-2:$str.="文件過大上傳文件不能超過{$this->maxsize}位元組";
break;
case-3:$str.="上傳文件失敗";
break;
case-4:$str.="建立存放上傳文件目錄失效,請重新上傳指定目錄";
break;
case-5:$str.="必須指定上傳文件的路徑";
break;
default:$str.="未知錯誤";
}
return$str.'<br>';
}
//用來檢查文件上傳路徑
privatefunctioncheckFilePath(){
if(empty($this->filepath)){
$this->setOption("errorNum",-5);
returnfalse;
}
if(!file_exists($this->filepath)||!is_writable($this->filepath)){
if(!@mkdir($this->filepath,0755)){
$this->setOption("errorNum",-4);
returnfalse;
}
}
returntrue;
}
//用來檢查上傳文件尺寸大小

privatefunctioncheckFileSize(){
if($this->fileSize>$this->maxsize){
$this->setOption("errorNum",-2);
returnfalse;
}else{
returntrue;
}
}

//用來檢查文件上傳類型
privatefunctioncheckFileType(){
if(in_array(strtolower($this->fileType),$this->allowtype)){
returntrue;
}else{
//如果$this->fileType這個類型不在$this->allowtype這個數組中,則把錯誤號變成-1
$this->setOption("errorNum",-1);
returnfalse;
}
}
privatefunctionsetNewFileName(){
if($this->israndname){
$this->setOption("newFileName",$this->preRandName());
}else{
$this->setOption("newFileName",$this->originName);
}
}
//用於檢查文件隨機文件名
privatefunctionpreRandName(){
$fileName=date("Ymdhis").rand(100,999);
return$fileName.".".$this->fileType;
}
//用來上傳一個文件

functionuploadFile($fileField){
//檢查文件路徑
$return=true;
if(!$this->checkFilePath()){
$this->errorMess=$this->getError();
returnfalse;
}//獲取文件信息
$name=$_FILES[$fileField]['name'];
$tmp_name=$_FILES[$fileField]['tmp_name'];
$size=$_FILES[$fileField]['size'];
$error=$_FILES[$fileField]['error'];
if(is_array($name)){//判斷獲取過來的文件名字是否為數組
$errors=array();//如果為數組則設置為一個數組錯誤號
for($i=0;$i<count($name);$i++){
//循環每個文件即每個類屬性賦值或者說初始化屬性值或者初始化構造函數
if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
if(!$this->checkFileSize()||!$this->checkFileType()){
//如果上面尺寸或者類型不對,則調用這個錯誤信息
$errors[$i]=$this->getError();
$return=false;
}
}else{
//這里是
$error[]=$this->getError();
$return=false;
}
if(!$return)
$this->setFiles();
}

if($return){
$fileNames=array();
for($i=0;$i<count($name);$i++){
if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
$this->setNewFileName();
if(!$this->File()){
$errors=$this->getError();
$return=false;
}else{
$fileNames[$i]=$this->newFileName;
}
}

}
$this->newFileName=$fileNames;
}

$this->errorMess=$errors;
return$return;


}else{

//看看$name,$tmp_name,$size,$error這些是否賦值成功否則返回FALSE
if($this->setFiles($name,$tmp_name,$size,$error)){
//看看文件大小尺寸是否匹配,不匹配返回FALSE
if($this->checkFileSize()&&$this->checkFileType()){
//獲取新文件名
$this->setNewFileName();
if($this->File()){
returntrue;
}else{
returnfalse;
}
}else{
$return=false;
}
}else{
$return=false;
}
if(!$return){
$this->errorMess=$this->getError();
return$return;
}
}

}

functionFile(){//將文件從臨時目錄拷貝到目標文件夾
if(!$this->errorNum){
//如果傳遞來的路徑有斜杠,則刪除斜杠再加上斜杠
//./upload+./
$filepath=rtrim($this->filepath,'/').'/';
//./upload+./+加上隨機後的新文件名和後綴
//這里指創建一個新的$filepath.這個文件像佔位符但是為空的
$filepath.=$this->newFileName;
//嘗試著把臨時文件$this->tmpFileName移動到$filepath下哪裡覆蓋原來的這個文件
if(@move_uploaded_file($this->tmpFileName,$filepath)){
returntrue;
}else{
$this->setOption('errorNum',-3);
returnfalse;
}
}else{
returnfalse;
}
}
//這里是為了其他剩餘的屬性進行初始化操作!
privatefunctionsetFiles($name="",$tmp_name="",$size=0,$error=0){
//這里給錯誤號賦值
$this->setOption("errorNum",$error);
//如果這里有錯誤,直接返回錯誤
if($error){
returnfalse;
}
$this->setOption("originName",$name);//復制名字為源文件名
$this->setOption("tmpFileName",$tmp_name);
$arrstr=explode(".",$name);//按點分割文件名,
//取分割後的字元串數組最後一個並轉換為小寫,賦值為文件類型
$this->setOption("fileType",strtolower($arrstr[count($arrstr)-1]));
$this->setOption("fileSize",$size);
returntrue;
}
//用來獲取上傳後的文件名
functiongetNewFileName(){
return$this->newFileName;
}

//上傳失敗,後則返回這個方法,就可以產看報告
functiongetErrorMsg(){
return$this->errorMess;
}
}
?>


============================調用====================================


<?php
require("FileUpload.class.php");
//這里實例化後賦值為數組,數組的下標要對應類中屬性的值,否則不能傳遞值,可以不分先後但是必須一致
$up=newFileUpload(array('israndname'=>'true',"filepath"=>"./upload/",'allowtype'=>array('txt','doc','jpg','gif'),"maxsize"=>1000000));
echo'<pre>';

if($up->uploadFile("pic")){
print_r($up->getNewFileName());
}else{
print_r($up->getErrorMsg());
}
echo'<pre>';
?>


-------------------HTML-------------------------
<html>
<head>
<metahttp-quive="content-type"content="text/html;charset=utf-8"></meta>
</head>
<body>
<formaction="upload.php"method="post"enctype="multipart/form-data">
shoppic:<inputtype="file"name="pic[]"><br>

<inputtype="hidden"name="MAX_FILE_SIZE"value="1000000">
<inputtype="submit"name="sub"value="添加商品">
</form>
</body>

</html>

-------------------或者HTML-------------------------

<html>
<head>
<metahttp-quive="content-type"content="text/html;charset=utf-8"></meta>
</head>
<body>
<formaction="upload.php"method="post"enctype="multipart/form-data">
//區別在這里
shoppic:<inputtype="file"name="pic[]"><br>
shoppic:<inputtype="file"name="pic[]"><br>
shoppic:<inputtype="file"name="pic[]"><br>
<inputtype="hidden"name="MAX_FILE_SIZE"value="1000000">
<inputtype="submit"name="sub"value="添加商品">
</form>
</body>

</html>
=====================================================================



以上是自己總結的 還沒有怎麼精簡加工過,僅供參考

以上不止可以上傳圖片,可以上自定義任何文件

閱讀全文

與php圖片的函數相關的資料

熱點內容
初二多項式乘法速演算法 瀏覽:453
android多個布局文件 瀏覽:627
奔跑程序員 瀏覽:468
伺服器如何搭建類似github 瀏覽:292
明日之後安卓太卡怎麼辦 瀏覽:502
如何使用命令方塊找到村莊 瀏覽:766
泛函壓縮映像原理 瀏覽:521
win10清除文件夾瀏覽記錄 瀏覽:964
如何查看伺服器域中所有服務 瀏覽:384
學mastercam91編程要多久 瀏覽:999
如何查伺服器地址和埠 瀏覽:911
教學雲平台app怎麼下載 瀏覽:389
單片機510教學視頻 瀏覽:624
陝西信合app怎麼查看自己的存款 瀏覽:663
風冷冰箱有壓縮機 瀏覽:274
android實現wifi連接wifi 瀏覽:669
飛豬app怎麼幫別人值機 瀏覽:924
筆記本開我的世界伺服器地址 瀏覽:546
怎樣隱藏bat命令 瀏覽:127
android開發創意 瀏覽:138