2013-07-12 2 views
0

만들고있는 응용 프로그램에 이미지를 업로드하려고합니다. .png 이미지는 파일 시스템에서 약 190KB를 차지하며 해상도는 2000px 및 1667px입니다. 32MB의 PHP 메모리 제한을 설정했습니다. 나는 내가 많은 사람들이 내 응용 프로그램이 어떤 작업을 수행하여 생각이 .PNG 이미지를 업로드 할 때 나는 것을 이해 는, 나는PNG 업로드 오류 - 할당 된 메모리 크기 오류

Allowed memory size of 33554432 bytes exhausted (tried to allocate 13336000 bytes) 

지금은에 이러한 계산 때 MB를 다음과 같은 오류가 말 받고 있어요 그것은

Allowed memory size of 32MB exhausted (tried to allocate 12.71MB) 

을 읽을 그래서 파일 시스템에 190킬로바이트의 크기가 너무 많은 메모리 공간을 차지 결국 보여줍니다 파일을 어떻게 와서 이해하지 못하는거야?을 그것은 .png 파일이 내가 모르는 메모리에서 어떻게 다루어 지는지에 관한 것입니까?

여기에서 코드 imagecreatefrompng

private function optimise_image($source_path, $destination_path){ 
    list($source_image_width, $source_image_height, $source_image_type) = getimagesize($source_path); 
    //Using this source path, we'll create a memory instance of the image for processing 
    $source_image_ratio = $source_image_width/$source_image_height; 
    switch ($source_image_type) { 
     case IMAGETYPE_GIF: 
      $source_gd_image = imagecreatefromgif($source_path); 
      break; 
     case IMAGETYPE_JPEG: 
      $source_gd_image = imagecreatefromjpeg($source_path); 
      break; 
     case IMAGETYPE_PNG: 
      $source_gd_image = imagecreatefrompng($source_path); 
      break; 
    } 

오류가 발생하는()가된다. 해상도를 줄이기 위해 여기에 이미지를로드하고보기에 스토리지 및 대역폭을 최적화하기 위해 품질을 설정합니다.

조금 더 조사하자마자 파일이 업로드되고 서버의 파일 크기가 190KB가되었습니다. 따라서보고있는 코드는 처리를 위해 파일을 다시 가져 오려는 곳입니다. 이 전에는 파일이 메모리에 한 번로드 된 다음 파괴되지 않고 남아있는 프로세스의 위치가 없습니다 (어떤 상황이 발생했는지 생각했습니다).

더 많은 정보가 필요하면 다음을 수행하십시오. 나에게 물어 보라. 나는 그에 따라 대답하려고 노력할 것이다. 픽셀 당

+2

더 나은 아이디어를 얻으려면 몇 가지 코드를 게시하십시오. – Rikesh

+0

ini_set ('memory_limit', '200M')을 사용하여 메모리 크기를 설정하십시오. – Sundar

+0

@Sundar 왜 190Kb 이미지에 200M이 필요합니까? – tlenss

답변

2

이미지 너비 x 이미지 높이 × 4 바이트 (32 비트) : 사전에

덕분 그래서 귀하의 경우

을에 약 12메가바이트의 단지 imagecreatefrompng/imagecreatefromjpeg

필요하다

GD lib 및 다른 PHP 프로세스의 경우 20MB 밖에 남지 않습니다.

+0

그래. 그게 내가 찾고 있던 대답이다. 바이트와 ​​비트로 어떻게 내려갈지를 아는 것은 매우 흥미 롭습니다. 이해에 대한 답변을 주셔서 감사합니다. 그래서 나는 190KB가 파일 시스템에서 압축 된 파일의 크기라고 생각합니다. 해상도와 관련이 있다고 생각한 또 다른 단서는 파일을 열 때마다 내 팬이 짧은 시간 동안 그냥 놀릴 것입니다. 이상한 작은 파일 (그리고 그 파일을 여는 데 더 오래 걸렸습니다) .. 감사합니다 다시 :) –