PHP에서 투명한 png 이미지 축소판을 생성하는 방법
참고: 이 기능은 GD2 그래픽 라이브러리에 따라 다릅니다
최근에 PHP를 사용하여 썸네일을 생성하고 싶었고 온라인에서 검색한 결과 다음 기사를 발견했습니다. PHP를 사용하여 이미지 썸네일 생성하기
시험해본 결과 다음과 같은 문제점을 발견했습니다.
1. png 이미지에서 생성된 썸네일은 jpg 형식입니다.
2. png 이미지에서 생성된 썸네일은 투명(반투명) 효과가 없습니다(검은색 배경으로 채워져 있음)
3. 코드 구문이 비교적 오래되었습니다.
따라서 우리는 이 버전을 기반으로 간단히 수정하고 최적화했습니다.
PHP는 썸네일 클래스를 생성합니다.
<?<span>php </span><span>/*</span><span> * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥(http://www.cnblogs.com/lurenjiashuo/) * date: 2014.11.13 * base from: http://www.oschina.net/code/snippet_5189_2491 </span><span>*/</span><span>class</span><span> ResizeImage { </span><span>//</span><span>图片类型</span><span>private</span><span>$type</span><span>; </span><span>//</span><span>实际宽度</span><span>private</span><span>$width</span><span>; </span><span>//</span><span>实际高度</span><span>private</span><span>$height</span><span>; </span><span>//</span><span>改变后的宽度</span><span>private</span><span>$resize_width</span><span>; </span><span>//</span><span>改变后的高度</span><span>private</span><span>$resize_height</span><span>; </span><span>//</span><span>是否裁图</span><span>private</span><span>$cut</span><span>; </span><span>//</span><span>源图象</span><span>private</span><span>$srcimg</span><span>; </span><span>//</span><span>目标图象地址</span><span>private</span><span>$dstimg</span><span>; </span><span>//</span><span>临时创建的图象</span><span>private</span><span>$im</span><span>; </span><span>function</span> __construct(<span>$imgPath</span>, <span>$width</span>, <span>$height</span>, <span>$isCut</span>, <span>$savePath</span><span>) { </span><span>$this</span>->srcimg = <span>$imgPath</span><span>; </span><span>$this</span>->resize_width = <span>$width</span><span>; </span><span>$this</span>->resize_height = <span>$height</span><span>; </span><span>$this</span>->cut = <span>$isCut</span><span>; </span><span>//</span><span>图片的类型</span><span>$this</span>->type = <span>strtolower</span>(<span>substr</span>(<span>strrchr</span>(<span>$this</span>->srcimg,"."),1<span>)); </span><span>//</span><span>初始化图象</span><span>$this</span>-><span>initi_img(); </span><span>//</span><span>目标图象地址</span><span>$this</span> -> dst_img(<span>$savePath</span><span>); </span><span>//</span><span>--</span><span>$this</span>->width = imagesx(<span>$this</span>-><span>im); </span><span>$this</span>->height = imagesy(<span>$this</span>-><span>im); </span><span>//</span><span>生成图象</span><span>$this</span>-><span>newimg(); ImageDestroy (</span><span>$this</span>-><span>im); } </span><span>private</span><span>function</span><span> newimg() { </span><span>//</span><span>改变后的图象的比例</span><span>$resize_ratio</span> = (<span>$this</span>->resize_width)/(<span>$this</span>-><span>resize_height); </span><span>//</span><span>实际图象的比例</span><span>$ratio</span> = (<span>$this</span>->width)/(<span>$this</span>-><span>height); </span><span>if</span>(<span>$this</span>-><span>cut) { </span><span>//</span><span>裁图</span><span>$newimg</span> = imagecreatetruecolor(<span>$this</span>->resize_width,<span>$this</span>-><span>resize_height); </span><span>if</span>(<span>$this</span>->type=="png"<span>) { imagefill(</span><span>$newimg</span>, 0, 0, imagecolorallocatealpha(<span>$newimg</span>, 0, 0, 0, 127<span>)); } </span><span>if</span>(<span>$ratio</span>>=<span>$resize_ratio</span><span>) { </span><span>//</span><span>高度优先</span> imagecopyresampled(<span>$newimg</span>, <span>$this</span>->im, 0, 0, 0, 0, <span>$this</span>->resize_width,<span>$this</span>->resize_height, ((<span>$this</span>->height)*<span>$resize_ratio</span>), <span>$this</span>-><span>height); } </span><span>else</span><span> { </span><span>//</span><span>宽度优先</span> imagecopyresampled(<span>$newimg</span>, <span>$this</span>->im, 0, 0, 0, 0, <span>$this</span>->resize_width, <span>$this</span>->resize_height, <span>$this</span>->width, ((<span>$this</span>->width)/<span>$resize_ratio</span><span>)); } } </span><span>else</span><span> { </span><span>//</span><span>不裁图</span><span>if</span>(<span>$ratio</span>>=<span>$resize_ratio</span><span>) { </span><span>$newimg</span> = imagecreatetruecolor(<span>$this</span>->resize_width,(<span>$this</span>->resize_width)/<span>$ratio</span><span>); </span><span>if</span>(<span>$this</span>->type=="png"<span>) { imagefill(</span><span>$newimg</span>, 0, 0, imagecolorallocatealpha(<span>$newimg</span>, 0, 0, 0, 127<span>)); } imagecopyresampled(</span><span>$newimg</span>, <span>$this</span>->im, 0, 0, 0, 0, <span>$this</span>->resize_width, (<span>$this</span>->resize_width)/<span>$ratio</span>, <span>$this</span>->width, <span>$this</span>-><span>height); } </span><span>else</span><span> { </span><span>$newimg</span> = imagecreatetruecolor((<span>$this</span>->resize_height)*<span>$ratio</span>,<span>$this</span>-><span>resize_height); </span><span>if</span>(<span>$this</span>->type=="png"<span>) { imagefill(</span><span>$newimg</span>, 0, 0, imagecolorallocatealpha(<span>$newimg</span>, 0, 0, 0, 127<span>)); } imagecopyresampled(</span><span>$newimg</span>, <span>$this</span>->im, 0, 0, 0, 0, (<span>$this</span>->resize_height)*<span>$ratio</span>, <span>$this</span>->resize_height, <span>$this</span>->width, <span>$this</span>-><span>height); } } </span><span>if</span>(<span>$this</span>->type=="png"<span>) { imagesavealpha(</span><span>$newimg</span>, <span>true</span><span>); imagepng (</span><span>$newimg</span>,<span>$this</span>-><span>dstimg); } </span><span>else</span><span> { imagejpeg (</span><span>$newimg</span>,<span>$this</span>-><span>dstimg); } } </span><span>//</span><span>初始化图象</span><span>private</span><span>function</span><span> initi_img() { </span><span>if</span>(<span>$this</span>->type=="jpg"<span>) { </span><span>$this</span>->im = imagecreatefromjpeg(<span>$this</span>-><span>srcimg); } </span><span>if</span>(<span>$this</span>->type=="gif"<span>) { </span><span>$this</span>->im = imagecreatefromgif(<span>$this</span>-><span>srcimg); } </span><span>if</span>(<span>$this</span>->type=="png"<span>) { </span><span>$this</span>->im = imagecreatefrompng(<span>$this</span>-><span>srcimg); } } </span><span>//</span><span>图象目标地址</span><span>private</span><span>function</span> dst_img(<span>$dstpath</span><span>) { </span><span>$full_length</span> = <span>strlen</span>(<span>$this</span>-><span>srcimg); </span><span>$type_length</span> = <span>strlen</span>(<span>$this</span>-><span>type); </span><span>$name_length</span> = <span>$full_length</span>-<span>$type_length</span><span>; </span><span>$name</span> = <span>substr</span>(<span>$this</span>->srcimg,0,<span>$name_length</span>-1<span>); </span><span>$this</span>->dstimg = <span>$dstpath</span><span>; } } </span>?>
사용
이를 사용할 때는 클래스의 생성자를 직접 호출하면 됩니다. 생성자는 다음과 같습니다.
<span>$resizeimage</span> = <span>new</span> resizeimage($imgPath, $width, $height, $isCut, $savePath);
매개변수
$imgPath: 원본 이미지 주소
$width: 썸네일 너비
$height: 썸네일 높이
$isCut: 자르기 여부, bool 값
$savePath: 썸네일 주소(원본 이미지 주소와 동일할 수 있음)
예
<?<span>php </span><span>include</span> "ResizeImage.php"<span>; </span><span>//</span><span>jpg</span><span>$jpgResize</span> = <span>new</span> ResizeImage("img/test_1920_1200.jpg", 320, 240, <span>false</span>, "img/test_320_240.jpg"<span>); </span><span>//</span><span>png</span><span>$pngResize</span> = <span>new</span> ResizeImage("img/test_1024_746.png", 320, 240, <span>false</span>, "img/test_320_240.png"<span>); </span>?>
효과
위 내용은 PHP에서 썸네일을 생성하는 내용을 포함하여 PHP가 투명한 png 이미지 썸네일을 생성하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

HTML5에서 너비는 너비를 의미합니다. 너비 속성은 콘텐츠 영역 외부에 내부 여백, 테두리 및 외부 여백을 추가할 수 있습니다. 요소.

1부: 초기 문제 해결 단계 Apple 시스템 상태 확인: 복잡한 솔루션을 살펴보기 전에 기본 사항부터 시작해 보겠습니다. 문제는 귀하의 기기에 있는 것이 아닐 수도 있습니다. Apple 서버가 다운되었을 수도 있습니다. Apple의 시스템 상태 페이지를 방문하여 AppStore가 제대로 작동하는지 확인하세요. 문제가 있는 경우 Apple이 문제를 해결하기를 기다리는 것뿐입니다. 인터넷 연결 확인: "AppStore에 연결할 수 없음" 문제는 때때로 연결 불량으로 인해 발생할 수 있으므로 인터넷 연결이 안정적인지 확인하십시오. Wi-Fi와 모바일 데이터 간을 전환하거나 네트워크 설정을 재설정해 보세요(일반 > 재설정 > 네트워크 설정 재설정 > 설정). iOS 버전을 업데이트하세요.

Vue에서 이미지를 압축하고 형식을 지정하는 방법은 무엇입니까? 프런트 엔드 개발에서는 이미지를 압축하고 형식을 지정해야 하는 경우가 종종 있습니다. 특히 모바일 개발에서는 페이지 로딩 속도를 높이고 사용자 트래픽을 절약하기 위해 이미지를 압축하고 포맷하는 것이 중요합니다. Vue 프레임워크에서는 일부 도구 라이브러리를 사용하여 이미지를 압축하고 형식을 지정할 수 있습니다. 압축기.js 라이브러리를 사용한 압축 압축기.js는 이미지 압축을 위한 JavaS입니다.

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 프런트 엔드 개발에서 CSS는 강력한 스타일 정의 언어입니다. 그 중 높이와 너비는 요소의 높이와 너비를 정의하는 데 사용되는 가장 기본적인 두 가지 치수 속성입니다. 이 기사에서는 이 두 가지 속성을 자세히 분석하고 구체적인 코드 예제를 제공합니다. 1. 높이 속성 높이 속성은 요소의 높이를 정의하는 데 사용됩니다. 픽셀, 백분율 또는

이미지 크기 조정, 자르기, 회전 및 뒤집기 먼저 원본 이미지는 다음과 같이 인터넷에서 다운로드한 다양한 크기의 10개 이미지입니다. 작업 1: 크기 조정 이미지 크기를 PILimportImageimporttorchvision.transformsastransforms#에서 동일한 크기(320,240)로 조정합니다. 이미지에서 읽을 라이브러리 및 resizeefResizeImage():ifnotos.path.exists(rdir):os.makedirs(rdir)foriinrange(10):im=Image.open(d
