2012-05-09 2 views
4

나는 크기가 조정 된 이미지와 축소 이미지를 동적으로 생성하는 CodeIgniter PHP 사이트를 인수했습니다.PHP 동적 이미지

<img src="/media/image/ImageName.jpg/100/100" /> 

이 도우미를 사용하여 생성이 :

echo img('media/image/ImageName.jpg/100/100'); 

몇 가지 논리가있다 여기에

는 100 픽셀 100 픽셀 썸네일에 의해 생성 사이트에 img 태그의 예입니다 미디어 컨트롤러의 이미지 기능은 캐시 폴더를 먼저 확인한 다음 캐시 된 이미지가있는 경우 해당 캐시 된 이미지를 제공합니다.

echo img_link('ImageName.jpg', 100, 100); 

이 새로운 img_link 기능 A의 :

여전히 우아한 접근과 SilverStripe 같은 다른 PHP 프레임 워크는 그것을 할 방법,이 같은 것을 할 더 나은 것보고되지 것 같다 도우미는 캐시 된 이미지를 먼저 확인하고 링크를 이미지 파일에 직접 작성하거나 새 이미지를 생성하고 html로 직접 링크를 전달합니다.

내 생각은 PHP 코드

$this->output->set_content_type('jpeg')->set_output(file_get_contents($file_path)); 

의이 유형을 사용하여 모든 img를 제공하는 경우 항상 비효율적 일 것입니다.

아무나 생각 나세요?

+0

같은 비율의면을 유지하려고하거나 이미지 크기를 늘리거나 이미지를 늘리려 고하고 있습니까? – AMayer

+0

몇 가지 시나리오가 있습니다. 하나는 사용자 입력없이 미리보기 이미지를 생성하고, 다른 하나는 사용자가 큰 이미지의 영역을 미리보기 이미지로 정의하는 미리보기 이미지입니다. –

답변

1

나는 동의한다, 나는 당신이 제안하고있는 것과 정확히 일치한다. (이미 캐시되어 있다면 직접 작성한다.) 잘 동작한다.

당신이 잡힐 것이라고 생각할 수있는 유일한 시간은 html이 캐시되고 캐시 된 이미지를 삭제 한 경우이므로 이미지 파일에 대한 직접 링크가 끊어집니다.

내 경우에는 캐시 된 이미지를 제거하지 않아도되므로 아직 손상되지 않았습니다.

개인적인 이미지가있는 경우에만 문제가되는 경우가 있습니다. 이 경우 PHP는 이미지를 표시하기 전에 먼저 권한이있는 사용자를 확인해야합니다. 그러면 직접 링크로 캐시 된 파일을 제공 할 수 없으며 사람들이 직접 링크를 공유 할 수 있고 더 이상 보안이 적용되지 않습니다.

아파치에 아파치에 모듈을 설치할 수 있다면 (아파치를 사용한다고 가정 할 때) 파일 전송 프로세스를 다시 아파치로 넘겨 줄 모듈 "x-sendfile"이있다. , 대신 PHP를 통해. 이것은 PHP가 제한 시간이 될 수있는 큰 파일에 유용합니다.

+0

추가 점수를 주셔서 감사합니다. –