PHP에서 GD로 이미지 크기를 조정할 때 3가지 해킹
8673 단어 phpimagesprogramming
1. 리샘플링을 기반으로 GD로 더 나은 안티앨리어싱
GD에는 형편없는 앤티앨리어싱 구현이 있지만 간단한 해킹으로 빠르게 수정할 수 있습니다.
<?php
$im = imagecreatetruecolor(4000, 3000);
imageantialias($im, true);
$c_black = imageColorAllocate($im, 0,0,0);
$c_green = imageColorAllocate($im, 46,204,64);
imagefilledellipse($im, 2000, 1500, 800, 800, $c_green);
$imf = imagecreatetruecolor(400, 300);
imagecopyresampled($imf, $im, 0,0,0,0, 400,300,4000,3000);
imagePng($imf, '/tmp/image.png');
4000, 3000
- 큰 크기의 초기 이미지를 생성했습니다(결과에 필요한 것의 10배), imagecopyresampled
- 이제 원본 큰 이미지(4000x3000)의 크기를 결과 이미지(400x300)로 조정하여 더 나은 앤티앨리어싱을 적용합니다. Open original 또는 edit on Github .
2. 비율에 맞게 이미지 크기 조정
<?php
$file = '/var/www/examples/heroine.png';
$size = getimagesize($file);
$im = imagecreatefrompng($file);
$w = 400;
$h = $w * $size[1] / $size[0];
$imf = imagecreatetruecolor($w, $h);
imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);
imagePng($imf, '/tmp/image.png');
$w = 400
- 이미지 크기를 너비 400픽셀로 조정합니다. $w * $size[1] / $size[0]
- 소스 이미지 비율을 기준으로 크기 조정된 이미지 높이를 계산합니다. Open original 또는 edit on Github .
3. 투명 PNG 이미지 크기 조정
<?php
$file = '/var/www/examples/clouds.png';
$size = getimagesize($file);
$im = imagecreatefrompng($file);
$w = 300;
$h = $w * $size[1] / $size[0];
$imf = imagecreatetruecolor($w, $h);
imagealphablending($imf, false);
imagesavealpha($imf, true);
imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);
imagePng($imf, '/tmp/image.png');
imagealphablending
- 투명 배경이 검은색으로 변환되지 않도록 알파 블렌딩을 비활성화합니다. imagesavealpha
- 결과 이미지에 대해 알파 채널(투명도 제어)을 활성화하고 있습니다. Open original 또는 edit on Github .
Reference
이 문제에 관하여(PHP에서 GD로 이미지 크기를 조정할 때 3가지 해킹), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nonunicorn/3-hacks-when-resizing-images-with-gd-in-php-45mk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)