Heim > Artikel > Backend-Entwicklung > PHP erfasst feste Bildgröße
1.创建iamge处理类
include_once 'ImageResize.class.php';
date_default_timezone_set('PRC');
class Image {
protected $nameinfo;
protected $InputImageFileExtension;
öffentliche statische Funktion getInstance() {
static $instance;
if (!isset ($instance)) {
$class = __CLASS__;
$instance = new $class ();
}
return $instance;
}
function uploadresize($fileparam, $imageparam) {
$newW = $imageparam['imageW'];
$newH = $imageparam['imageH'];
$this->nameinfo = explosion('.',$fileparam['name']);
//取得图片格式
$this->InputImageFileExtension = $this->nameinfo[1];
//判断是不是给了新的文件名
if(empty($imageparam['imagename'])){
$outputFileName = $this-& gt;nameinfo[0];
}else{
$outputFileName = $imageparam['imagename'];
}
(!mkdir($imageparam['imagepath']) ){
throw new Exception('image path is false');
Ausgang;
}
}
$file_src = $imageparam['imagepath']."/". $outputFileName . „_.“ . $this->InputImageFileExtension;
// temporäre sichere Bildspeicherung
if(file_exists($file_src)){
unlink($file_src);
}
move_uploaded_file($fileparam['tmp_name'], $file_src);
// Bildgröße festlegen
$imageResize = new ImageResize();
$imageResize->my_image_resize($file_src,$file_src,$newW,$newH,$this->InputImageFileExtension);
}
}
?>
2.设置图片大小处理类:
class ImageResize {
/*
* 说明:函数功能是把一个图像裁剪为任意大小的图像×图片的宽,生成新图片的高
* geschrieben von smallchicken
* time 2008-12-18
*/
// 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白
function. my_image_resize($s rc_file, $dst_file, $new_width, $new_height , $type) {
if ($new_width < 1 || $new_height < 1) {
echo "params width or height error !";
exit ();
}
if (! file_exists ( $src_file )) {
echo $src_file . " ist nicht vorhanden !";
}
// Bildtyp
$support_type = array ("jpg", "png", "gif" );
if (! in_array ( $type, $support_type, true )) {
echo „Dieser Bildtyp unterstützt nicht! unterstützt nur jpg , gif oder png“;
exit ();
}
//Bild laden
switch ($type) {
case "jpg" :
$src_img = imagecreatefromjpeg (
break; png" :
$src_img = imagecreatefrompng ( $src_file );
break;
case "gif" :
$src_img = imagecreatefromgif ( $src_file );
break;
default :
echo „Bildfehler laden“;
exit ();
$w = imagesx (
$h = imagesy (
); ///
if($w < $new_width && $h < $new_height){
// Definieren Sie ein temporäres Zwischenbild, dessen Seitenverhältnis gerade den Zielanforderungen entspricht
$inter_w = $w;
$inter_h = $h;
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopy ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h );
// Erzeuge ein temporäres Bild mit der maximalen Seitenlänge als Zielbild-$ratio-Verhältnis
// Definiere ein neues Bild
$new_img = imagecreatetruecolor ( $inter_w, $inter_h ); $new_img, $inter_img, 0, 0, 0, 0, $inter_w, $inter_w, $inter_h, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $ new_img, $dst_file, 100 ); // Bild speichern
case "png" :
imagepng ( $new_img, $dst_file, 100 );
case "gif " :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break;
}
die();
}
////
$ratio_w = 1.0 * $new_width / $w;
$ratio_h = 1.0 * $new_height / $h;
$ratio = 1.0; Die Breite des generierten Bildes ist kleiner oder größer als die des Originals. Das Prinzip besteht darin, um ein großes Verhältnis zu vergrößern und um ein großes Verhältnis zu verkleinern (das verkleinerte Verhältnis wird kleiner sein)
if (($ratio_w < 1 && $ ratio_h < 1) ||. ($ratio_w > 1 && $ratio_h > 1)) {
if ($ratio_w < $ratio_h) {
$ratio = $ratio_h; Das Breitenverhältnis ist kleiner als die Höhenrichtung und wird gemäß dem Höhenverhältnisstandard zugeschnitten oder vergrößert. das Seitenverhältnis des Bildes erfüllt gerade die Zielanforderungen
$inter_w = ( int ) ($new_width / $ratio); = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopy ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h );
// Erzeuge ein Bild mit der maximalen Seitenlänge als die Größe Es ist ein temporäres Bild des Zielbildes $ratio ratio
// Definiere ein neues Bild
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopyresampled ( $new_img, $inter_img, 0 , 0, 0 , 0, $new_width, $new_height, $inter_w, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ) ; // Speicherbild
break;
imagepng (
case "gif" :
imagepng ( $new_img, $ dst_file, 100 );
break;
default :
break
}
} else {
// end if 1
// 2 Eine Seite Das Zielbild ist größer als das Originalbild, eine Seite ist kleiner als das Originalbild. Vergrößern Sie zuerst das normale Bild und schneiden Sie es dann zu
// =if( ($ratio_w < 1 && $ratio_h > 1 ) ||. ($ratio_w >1 && $ratio_h < ;1) )
$ratio = $ratio_h > $ratio_w : $ratio_w; Definieren Sie ein großes Bild in der Mitte, die Höhe oder Breite des Bildes und die Zielbilder sind gleich, und dann wird das Originalbild vergrößert
$inter_w = ( int ) ($w * $ratio); inter_h = ( int ) ($h * $ratio);
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
//Das Originalbild nach der Skalierung zuschneiden
imagecopyresampled ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h ); $new_img, $inter_img, 0, 0, 0, 0, $new_width, $ new_height );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // Bild speichern
case "png" :
imagepng ( $new_img, $dst_file, 100 );
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
break;
} // if3
}
?>
3. Feste Bildgröße und Pfadeinstellungen
include „../../tools/Image/Image.class.php“ ;
$array = $_FILES['photo'];
//Skalierungsparameter
$resizeParam = array (
'imagepath' => 'd:/xampp/ www/ ', //Bildspeicherpfad
'imageW' => 200, //Bildspeicherpfad
'imageH' => 200 //Bildspeicherpfad
); array)) {
Image :: getInstance()->uploadresize($array, $resizeParam);
?> html>