Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Methode zur verzerrungsfreien Implementierung von Bildskalierungscode

PHP-Methode zur verzerrungsfreien Implementierung von Bildskalierungscode

怪我咯
怪我咯Original
2017-07-10 11:56:051715Durchsuche

Dieser Artikel teilt Ihnen den Code zum Skalieren von Bildern mit PHP mit. Freunde können ihn in das Bild hochladen als Referenz verwenden.

Erstellen Sie eine neue Datei index.php. Sie benötigen ein Bild q.jpg im Statistikverzeichnis (der Name des Bildes kann je nach Quellcode geändert werden)

Die Quelle Der Code lautet wie folgt:

<?php
$filename="q.jpg";
$per=0.3;
list($width, $height)=getimagesize($filename);
$n_w=$width*$per;
$n_h=$height*$per;
$new=imagecreatetruecolor($n_w, $n_h);
$img=imagecreatefromjpeg($filename);
//拷贝部分图像并调整
imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);
//图像输出新图片、另存为
imagejpeg($new, "q1.jpg");
imagedestroy($new);
imagedestroy($img);
?>

Nachdem es mit einem Browser ausgeführt wurde, befindet sich q1.jpg im Verzeichnis auf derselben Ebene wie index.php. Der Pfad kann sein Im Quellcode geändert und in Ihr eigenes Projekt eingefügt.


Manchmal sind die Bilder beim Hochladen zu groß, was nicht nur Platz beansprucht und Datenverkehr verbraucht, sondern auch wirkt sich auch auf das Surfen aus (die Größe der Bilder variiert). Lassen Sie uns eine Methode zum Skalieren von Bildern in gleichen Proportionen ohne Verzerrung vorstellen. Auf diese Weise wird das hochgeladene Bild automatisch auf den von uns festgelegten Größenwert komprimiert. Getestet und praxiserprobt.

<?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("imagecopyresampled"))
  {
  $newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数
   imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数
  }
  else
  {
  $newim = imagecreate($newwidth,$newheight);
   imagecopyresized($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("./20140416103023202.jpg");//参数是图片的存方路径
$maxwidth="600";//设置图片的最大宽度
$maxheight="400";//设置图片的最大高度
$name="123";//图片的名称,随便取吧
$filetype=".jpg";//图片类型
resizeImage($im,$maxwidth,$maxheight,$name,$filetype);//调用上面的函数

Das obige ist der detaillierte Inhalt vonPHP-Methode zur verzerrungsfreien Implementierung von Bildskalierungscode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn