문제

내 사이트 사용자는 아바타로 사용되는 이미지를 업로드합니다.업로드 제한 크기를 2MB로 설정했습니다.대부분의 장소에서는 썸네일만 필요합니다.그러나 사용자는 훨씬 더 큰 해상도의 이미지를 업로드합니다.나는 이 파일들을 내 파일 시스템에 저장합니다.

대용량 파일 대신 썸네일을 생성하고 저장하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

설치 / 서버 설정에 따라 몇 가지 가능성이 있습니다.

나는 GD를 설치하지 않고 서버를 본 적이 없다고 말할 것입니다. imagick의 경우 기본적으로 설치 될 가능성이 적습니다 :-(


또 다른 해결책은 전환하다 명령 줄 유틸리티 (PHP 확장과 독립적으로 Imagemagick과 함께 제공됩니다), 같은 것을 사용합니다 exec 그것을 부르기 위해.

이점은 당신이 제한되지 않을 것입니다. memory_limit, 크기 조정은 외부 도구에 의해 수행되므로, 물론, 응용 프로그램은 외부 도구에 의존한다는 것을 의미합니다.


필요한 경우 GD에 대한 튜토리얼이 많이 있습니다. 예를 들어, 그것들은 당신에게 관심을 가질 수 있습니다.

  • PHP 및 GD로 축소판을 만드는 방법 : 배치 프로세스를 사용하여 많은 이미지의 썸네일을 생성합니다. 이미 가지고있는 모든 이미지에 대한 축소판을 생성 해야하는 경우 유용 할 수 있습니다.
  • PHP 튜토리얼을 사용한 썸네일 생성 : 정사각형 썸네일을 만들고, 오리 널 이미지를 중심하고 배경색을 추가하여 자주 보지 못하는 것들을 자주 보지 못합니다.

다른 팁

당신은 사용할 수 있습니다 GD 모듈 아니면 그 ImageMagick 모듈 업로드된 이미지의 크기를 조정하고 축소합니다.

"PHP 이미지 크기 조정기"와 같은 것을 검색해 보면 많은 예를 찾을 수 있습니다.나는 잘 작동하는 오래된 코드가 있기 때문에 GD를 사용하는 경향이 있습니다.알려진 업로드된 JPEG 이미지가 다음 위치에 있다고 가정합니다. $srcImgPath, 다음과 같은 작업을 수행할 수 있습니다. $newWidth 그리고 $newHeight 원하는 이미지의 새로운 크기는 다음과 같습니다.

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

적절하게 기능화하고 다음을 지정하십시오. $quality.이 코드를 추상화하여 gif 및 png도 매우 쉽게 처리할 수 있습니다.

GD 라이브러리, 특히 imagecopyresized 기능

GD 경로를 내려 가면 더 깨끗한 이미지를 생성하므로 imagecopyresamped를 사용하십시오. 그것은 그것이 거칠고/또는 픽스처럼 보이지 않을 것임을 의미합니다.

기능에 대한 PHP 매뉴얼 링크 : http://us2.php.net/manual/en/function.imagecopyresampled.php

Timthumb.php 스크립트를 추천합니다. 바위 단단합니다.http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-releident/

PHP 설정에 Imagick이 설치된 경우 그런 다음이 작업을 수행하는 기능이 있습니다. Imagick :: Thumbnailimage ()

Imagick이 없다면 GD 라이브러리가 유용합니다. 그들은 가지고 있기 때문에 imagcopyresized ()

Google Appengine은 PIL의 서브 세트가 장착되어 있지 않습니까? 사용할 수있는 '크기 조정'기능이 있습니다. 무엇보다도 무료 할당량을 받고 있습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top