찾다
php教程php手册php上传图片生成等比例缩略图代码

php上传图片生成等比例缩略图代码

Jun 13, 2016 am 09:48 AM
php하나업로드암호사용그림문서비율생성하다~의단순한

一个简单的使用php上传图片文件生然后再生成一张等比例的缩略图效果,有需要学习的朋友可参考参考。

 代码如下 复制代码

 

function _UPLOADPIC($upfile, $maxsize, $updir, $newname = 'date') {

if ($newname == 'date')

$newname = date ( "Ymdhis" ); //使用日期做文件名 

$name = $upfile ["name"];

$type = $upfile ["type"];

$size = $upfile ["size"];

$tmp_name = $upfile ["tmp_name"];

switch ($type) {

case 'image/pjpeg' :

case 'image/jpeg' :

$extend = ".jpg";

break;

case 'image/gif' :

$extend = ".gif";

break;

case 'image/png' :

$extend = ".png";

break;

}

if (emptyempty ( $extend )) {

echo ( "警告!只能上传图片类型:GIF JPG PNG" );

exit ();

}

if ($size > $maxsize) {

$maxpr = $maxsize / 1000;

echo ( "警告!上传图片大小不能超过" . $maxpr . "K!" );

exit ();

}

if (move_uploaded_file ( $tmp_name, $updir . $newname . $extend )) {

return $updir . $newname . $extend;

}

}

 

function show_pic_scal($width, $height, $picpath) {

$imginfo = GetImageSize ( $picpath );

$imgw = $imginfo [0];

$imgh = $imginfo [1];

 

$ra = number_format ( ($imgw / $imgh), 1 ); //宽高比

$ra2 = number_format ( ($imgh / $imgw), 1 ); //高宽比

 

 

if ($imgw > $width or $imgh > $height) {

if ($imgw > $imgh) {

$newWidth = $width;

$newHeight = round ( $newWidth / $ra );

 

} elseif ($imgw 

$newHeight = $height;

$newWidth = round ( $newHeight / $ra2 );

} else {

$newWidth = $width;

$newHeight = round ( $newWidth / $ra );

}

} else {

$newHeight = $imgh;

$newWidth = $imgw;

}

$newsize [0] = $newWidth;

$newsize [1] = $newHeight;

 

return $newsize;

}

 

 

 

function getImageInfo($src)

{

return getimagesize($src);

}

/**

* 创建图片,返回资源类型

* @param string $src 图片路径

* @return resource $im 返回资源类型 

* **/ 

function create($src)

{

$info=getImageInfo($src);

switch ($info[2])

{

case 1:

$im=imagecreatefromgif($src);

break;

case 2:

$im=imagecreatefromjpeg($src);

break;

case 3:

$im=imagecreatefrompng($src);

break;

}

return $im;

}

/**

* 缩略图主函数

* @param string $src 图片路径

* @param int $w 缩略图宽度

* @param int $h 缩略图高度

* @return mixed 返回缩略图路径

* **/ 

 

function resize($src,$w,$h)

{

$temp=pathinfo($src);

$name=$temp["basename"];//文件名

$dir=$temp["dirname"];//文件所在的文件夹

$extension=$temp["extension"];//文件扩展名

$savepath="{$dir}/{$name}";//缩略图保存路径,新的文件名为*.thumb.jpg

 

//获取图片的基本信息

$info=getImageInfo($src);

$width=$info[0];//获取图片宽度

$height=$info[1];//获取图片高度

$per1=round($width/$height,2);//计算原图长宽比

$per2=round($w/$h,2);//计算缩略图长宽比

 

//计算缩放比例

if($per1>$per2||$per1==$per2)

{

//原图长宽比大于或者等于缩略图长宽比,则按照宽度优先

$per=$w/$width;

}

if($per1

{

//原图长宽比小于缩略图长宽比,则按照高度优先

$per=$h/$height;

}

$temp_w=intval($width*$per);//计算原图缩放后的宽度

$temp_h=intval($height*$per);//计算原图缩放后的高度

$temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布

$im=create($src);

imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height);

if($per1>$per2)

{

imagejpeg($temp_img,$savepath, 100);

imagedestroy($im);

return addBg($savepath,$w,$h,"w");

//宽度优先,在缩放之后高度不足的情况下补上背景

}

if($per1==$per2)

{

imagejpeg($temp_img,$savepath, 100);

imagedestroy($im);

return $savepath;

//等比缩放

}

if($per1

{

imagejpeg($temp_img,$savepath, 100);

imagedestroy($im);

return addBg($savepath,$w,$h,"h");

//高度优先,在缩放之后宽度不足的情况下补上背景

}

}

/**

* 添加背景

* @param string $src 图片路径

* @param int $w 背景图像宽度

* @param int $h 背景图像高度

* @param String $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比

* @return 返回加上背景的图片

* **/ 

function addBg($src,$w,$h,$fisrt="w")

{

$bg=imagecreatetruecolor($w,$h);

$white = imagecolorallocate($bg,255,255,255);

imagefill($bg,0,0,$white);//填充背景

 

//获取目标图片信息

$info=getImageInfo($src);

$width=$info[0];//目标图片宽度

$height=$info[1];//目标图片高度

$img=create($src);

if($fisrt=="wh")

{

//等比缩放

return $src;

}

else 

{

if($fisrt=="w")

{

$x=0;

$y=($h-$height)/2;//垂直居中

}

if($fisrt=="h")

{

$x=($w-$width)/2;//水平居中

$y=0;

}

imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100);

imagejpeg($bg,$src,100);

imagedestroy($bg);

imagedestroy($img);

return $src;

}
}
?> 

使用方法: 

$filename=(_UPLOADPIC($_FILES["upload"],$maxsize,$updir,$newname='date'));
$show_pic_scal=show_pic_scal(230, 230, $filename);
resize($filename,$show_pic_scal[0],$show_pic_scal[1]);

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경