2009-08-14 3 views
0

PHP에서 이미지를 축소판으로 크기 조정하는 기능이 있습니다. 내 이미지 업로드 스크립트는 업로드 된 이미지를 가져 와서이 함수를 실행하여 크기가 700px보다 넓 으면 이미지 크기를 조정합니다. 기능을 2 번 더하여 크기가 다른 2 가지 작은 이미지를 만들면 사용자가 이미지를 업로드 할 때마다 총 3 개의 이미지가 저장됩니다. 축소판에 대한 내 resize/thumbnail 함수는 2 회, 파일의 크기가 넓은 경우 3 회 가끔 호출됩니다.PHP의 이미지 축소판 성능에 대한 질문

이제이 크기 조정 함수는 getimagesize()를 사용하여 치수를 가져옵니다. 따라서 uuplaod 스크립트가이 함수를 호출하면 크기 조정 함수는 getimagesize() 함수를 2-3 번 더 사용하여 다른 크기의 이미지를 만듭니다.

나는 dimesions를 업로드 프로세스에서 얻은 이후로 resize 함수에 전달해야한다고 생각하고 있습니까?

내 진짜 질문은, 가능한 한 적어도 그것을 사용하는 것이 가장 좋을 것인가, 아니면 1 이미지가 잘 업로드 될 때 몇 번이나 호출 할 것인가, getimagesize() 리소스 배가 고픈 functon입니까?

답변

3

그냥 팁/precausion, 난 당신이 GD 기능을 사용하고 asssume. 둘 이상의 축소판을 만들 때 일반적으로 병목 현상은 잘못된 크기로 이미지 크기 조정 기능을 구현하여 원본 이미지를 읽고 크기가 조정 된 이미지를 저장할 때마다 발생합니다. 더 좋은 방법은 이미지를 한 번로드하고 이미지 리소스를 사용하여 모든 축소판을 imagecopyresampled으로 만드는 것입니다. 이미지의 크기를 함수에 전달할뿐만 아니라 GD 참조도 전달합니다.원본 파일은 한 번만로드됩니다.

+0

감사합니다. 내가 수행하려고 생각한 것이 있습니다. – JasonDavis

2

업로드 할 때만 실행되는 항목에 대해서는 별 문제가 없습니다. 업로드는 사용자가 초고속 응답을 기대하는 동작이 아닙니다. 조기 최적화는 모든 악의 뿌리입니다.

즉, getimagesize()은 비용이 많이 들지는 않지만 한 번만 호출하면됩니다. 그러나 나는 속도의 증가를 예측하지 못합니다. 스크립트의 값 비싼 부분은 이미지 자체 크기 조정입니다.

1

특히 리소스가 부족하지는 않습니다. 파일을 열고 이미지 헤더를 읽어야합니다.

쉽게 최적화 할 수있는 방법을 벗어나지 마십시오. 쉽게 해결할 수 있습니다. 그렇지 않으면 최적화하기 전에 실제 병목 현상이 애플리케이션에있는 곳을 기다려보십시오.

0

가장 좋은 방법은 스크립트를 프로파일하는 것입니다.

특정 상황에 적용되지 않을 수도있는 이론적 답변 대신 실제 답변을 얻고 실제로 유익합니다.

  • 는 마이크로 최적화 및 주요 최적화의 차이를 만들 병목
  • 을 발견 :에

    또한,이 습관, 당신은 할 수 있습니다.

개인적으로 개발했습니다. Windows에서 * nix에 배포 할 수 있습니다.

내 devox에서 xdebug + WinCacheGrind를 사용하여 결과를 읽습니다.

나는 그것 없이는 살 수 없었다. :)

http://elrems.wordpress.com/2008/02/12/profiling-php-with-xdebug-and-wincachegrind/

0

업로드 부분이 이미지의 크기를 조정해야하는 부분이라고 생각하지 않습니다. 나중에 cron 작업으로 이미지의 크기를 조정해야합니다. imagemagick 또는 다른 크기 조정 응용 프로그램과 같은 타사 응용 프로그램을 사용하여 이미지의 크기를 조정할 수 있습니다. 그렇게하면 프런트 엔드에 시간을 절약 할 수 있습니다. 5 분 정도마다 크기 조정 작업을 실행할 수 있습니다.

+0

나는 이것을 고려해 보았습니다. – JasonDavis