Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Schritte zum Zuschneiden von Bildern in PHP?

Was sind die Schritte zum Zuschneiden von Bildern in PHP?

藏色散人
藏色散人Original
2021-11-30 10:20:063740Durchsuche

Schritte zum Zuschneiden von Bildern mit PHP: 1. Erstellen Sie eine PHP-Beispieldatei. 2. Verwenden Sie die Methode „function imageCropper(){...}“, um ein bildinvariantes Zuschneiden zu erreichen. 3. Verwenden Sie „function imageZoom()“. .} ”-Methode kann verwendet werden, um das Bild proportional zuzuschneiden.

Was sind die Schritte zum Zuschneiden von Bildern in PHP?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.4, DELL G3-Computer

Was sind die Schritte zum Zuschneiden von Bildern mit PHP?

So implementieren Sie bildinvariantes Zuschneiden und bildproportionales Zuschneiden mit PHP

Dieser Artikel beschreibt das Beispiel der PHP-Implementierung von bildinvariantem Zuschneiden und bildproportionalem Zuschneiden. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Bild unveränderter Zuschnitt

<?php
/**
 * imageCropper
 * @param string $source_path
 * @param string $target_width
 * @param string $target_height
 */
function imageCropper($source_path, $target_width, $target_height){
  $source_info  = getimagesize($source_path);
  $source_width = $source_info[0];
  $source_height = $source_info[1];
  $source_mime  = $source_info[&#39;mime&#39;];
  $source_ratio = $source_height / $source_width;
  $target_ratio = $target_height / $target_width;
  if ($source_ratio > $target_ratio){
    // image-to-height
    $cropped_width = $source_width;
    $cropped_height = $source_width * $target_ratio;
    $source_x = 0;
    $source_y = ($source_height - $cropped_height) / 2;
  }elseif ($source_ratio < $target_ratio){
    //image-to-widht
    $cropped_width = $source_height / $target_ratio;
    $cropped_height = $source_height;
    $source_x = ($source_width - $cropped_width) / 2;
    $source_y = 0;
  }else{
    //image-size-ok
    $cropped_width = $source_width;
    $cropped_height = $source_height;
    $source_x = 0;
    $source_y = 0;
  }
  switch ($source_mime){
    case &#39;image/gif&#39;:
      $source_image = imagecreatefromgif($source_path);
      break;
    case &#39;image/jpeg&#39;:
      $source_image = imagecreatefromjpeg($source_path);
      break;
    case &#39;image/png&#39;:
      $source_image = imagecreatefrompng($source_path);
      break;
    default:
      return ;
      break;
  }
  $target_image = imagecreatetruecolor($target_width, $target_height);
  $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
  // copy
  imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height);
  // zoom
  imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
  header(&#39;Content-Type: image/jpeg&#39;);
  imagejpeg($target_image);
  imagedestroy($source_image);
  imagedestroy($target_image);
  imagedestroy($cropped_image);
}
$filename = "8fcb7a0831b79c61.jpg";
imageCropper($filename,200,200);
?>

Bild proportionaler Zuschnitt

<?php
/**
 * imageZoom
 * @param string $file
 * @param double $zoom
 */
function imageZoom($filename,$zoom=0.6){
  //baseinfo
  $sourceImageInfo = getimagesize($filename);
  $sourceWidth = $sourceImageInfo[0];
  $sourceHeight = $sourceImageInfo[1];
  $sourceMine = $sourceImageInfo[&#39;mime&#39;];
  $sourceRatio = $sourceWidth/$sourceHeight;
  $sourceX = 0;
  $sourceY = 0;
  //zoom
  $targetRatio = $zoom;
  //target-widht-height
  $targetWidth = $sourceWidth*$targetRatio;
  $targetHeight = $sourceHeight*$targetRatio;
  //init-params
  $sourceImage = null;
  switch($sourceMine){
    case &#39;image/gif&#39;:
      $sourceImage = imagecreatefromgif($filename);
      break;
    case &#39;image/jpeg&#39;:
      $sourceImage = imagecreatefromjpeg($filename);
      break;
    case &#39;image/png&#39;:
      $sourceImage = imagecreatefrompng($filename);
      break;
    default:
      return ;
      break;
  }
  //temp-target-image
  $tempSourceImage = imagecreatetruecolor($sourceWidth, $sourceHeight);
  $targetImage = imagecreatetruecolor($targetWidth,$targetHeight);
  //copy
  imagecopy($tempSourceImage, $sourceImage, 0, 0, $sourceX, $sourceY, $sourceWidth, $sourceHeight);
  //zoom
  imagecopyresampled($targetImage, $tempSourceImage, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight);
  //header
  header(&#39;Content-Type: image/jpeg&#39;);
  //image-loading
  imagejpeg($targetImage);
  //destroy
  imagedestroy($tempSourceImage);
  imagedestroy($sourceImage);
  imagedestroy($targetImage);
}
$filename = "8fcb7a0831b79c61.jpg";
imageZoom($filename);
?>

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas sind die Schritte zum Zuschneiden von Bildern in PHP?. 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