개발! 딱 깔끔하고 센스있게!

PHP 를 사용 하여 미리 보기 그림 을 만 듭 니 다.(사각형 으로 자 르 기) 본문

개발 스크랩 메모/PHP

PHP 를 사용 하여 미리 보기 그림 을 만 듭 니 다.(사각형 으로 자 르 기)

렉사이 2020. 11. 27. 23:52

현재 사용 중인 phop 스 크 립 트 그림 이 있 습 니 다.

최대 너비 와 높이 에 기반 한 미리 보기 그림 을 만 듭 니 다.

하지만 항상 정사각형 그림 을 만 들 고 필요 할 때 그림 을 자 르 기 를 바 랍 니 다.

내 가 지금 사용 하 는 것 은:

 function makeThumb( $filename, $type ) { global $max_width, $max_height; if ( $type == 'jpg' ) { $src = imagecreatefromjpeg("blocks/img/gallery/" . $filename); } else if ( $type == 'png' ) { $src = imagecreatefrompng("blocks/img/gallery/" . $filename); } else if ( $type == 'gif' ) { $src = imagecreatefromgif("blocks/img/gallery/" . $filename); } if ( ($oldW = imagesx($src)) < ($oldH = imagesy($src)) ) { $newW = $oldW * ($max_width / $oldH); $newH = $max_height; } else { $newW = $max_width; $newH = $oldH * ($max_height / $oldW); } $new = imagecreatetruecolor($newW, $newH); imagecopyresampled($new, $src, 0, 0, 0, 0, $newW, $newH, $oldW, $oldH); if ( $type == 'jpg' ) { imagejpeg($new, 'blocks/img/gallery/thumbs/'.$filename); } else if ( $type == 'png' ) { imagepng($new, 'blocks/img/gallery/thumbs/'.$filename); } else if ( $type == 'gif' ) { imagegif($new, 'blocks/img/gallery/thumbs/'.$filename); } imagedestroy($new); imagedestroy($src); } 

이 걸 어떻게 바 꿔 서 내 가 원 하 는 걸 이 룰 수 있 을 까?

미리 감사합니다.

대답 하 다.

function makeThumb( $filename , $thumbSize=100 ){ global $max_width, $max_height; /* Set Filenames */ $srcFile = 'blocks/img/gallery/'.$filename; $thumbFile = 'blocks/img/gallery/thumbs/'.$filename; /* Determine the File Type */ $type = substr( $filename , strrpos( $filename , '.' )+1 ); /* Create the Source Image */ switch( $type ){ case 'jpg' : case 'jpeg' : $src = imagecreatefromjpeg( $srcFile ); break; case 'png' : $src = imagecreatefrompng( $srcFile ); break; case 'gif' : $src = imagecreatefromgif( $srcFile ); break; } /* Determine the Image Dimensions */ $oldW = imagesx( $src ); $oldH = imagesy( $src ); /* Calculate the New Image Dimensions */ if( $oldH > $oldW ){ /* Portrait */ $newW = $thumbSize; $newH = $oldH * ( $thumbSize / $newW ); }else{ /* Landscape */ $newH = $thumbSize; $newW = $oldW * ( $thumbSize / $newH ); } /* Create the New Image */ $new = imagecreatetruecolor( $thumbSize , $thumbSize ); /* Transcribe the Source Image into the New (Square) Image */ imagecopyresampled( $new , $src , 0 , 0 , ( $newW-$thumbSize )/2 , ( $newH-$thumbSize )/2 , $thumbSize , $thumbSize , $oldW , $oldH ); switch( $type ){ case 'jpg' : case 'jpeg' : $src = imagejpeg( $new , $thumbFile ); break; case 'png' : $src = imagepng( $new , $thumbFile ); break; case 'gif' : $src = imagegif( $new , $thumbFile ); break; } imagedestroy( $new ); imagedestroy( $src ); } 
Comments