정확한 응용방법은 모르지만 고객의 요청에 의해 찾아서 적용시켜 보았습니다.
해결되지 않은 부분은 이미지를 왼쪽,위를 기준으로 자르는데 가운데 기준으로 자르는 방법은 모릅니다.
이미지는 정사각형이여야 합니다.
또 등록한 이미지의 사이즈대로만 crop이 가능합니다 (200x200의 이미지면 그 사이즈대로 잘립니다.)
적용은 잘 되는걸로 확인되는데 개선사항이 있다면 댓글 또는 조언 부탁합니다.
if (!is_dir($target_path)) {
//이미지를 저장 할 폴더 생성
//$target_path는 폴더의 경로를 적어주면 된다.
//예: $target_path = "../folderName";
@mkdir($target_path, G5_DIR_PERMISSION);
@chmod($target_path, G5_DIR_PERMISSION);
}
$w = 200; // original size
$h=200; // original size
$img_path="image.jpg"; //실제 이미지
$save_path="cropCircel.png" //변경된 이미지 저장될 이름과 경로도 설정 가능 , 저장될 경로 설정을 원한다면 경로/cropCircel.png 이런식으로 작성하면 된다.
//이 아래로는 건드리지 않았다.
$src = imagecreatefromstring(file_get_contents($img_path));
$newpic = imagecreatetruecolor($w,$h);
imagealphablending($newpic,false);
$transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127);
$r=$w/2;
for($x=0;$x<$w;$x++)
for($y=0;$y<$h;$y++){
$c = imagecolorat($src,$x,$y);
$_x = $x - $w/2;
$_y = $y - $h/2;
if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){
imagesetpixel($newpic,$x,$y,$c);
}else{
imagesetpixel($newpic,$x,$y,$transparent);
}
}
imagesavealpha($newpic, true);
imagepng($newpic, $save_path);
imagedestroy($newpic);
imagedestroy($src);
'php' 카테고리의 다른 글
php 엑셀 .xlsx 다운로드 (0) | 2022.05.14 |
---|---|
배열에서 특정 요소 삭제하기 unset() (0) | 2022.05.14 |
ajax 기본 / ajax Json (0) | 2022.03.26 |
댓글