2010-08-17 2 views
0

가장 최근 정보가있는 맨 아래를 먼저 읽습니다. 대부분이 오래된 정보입니다 (필요한 경우도 있음).PHP 이미지 편집

나는 당신이주는 이미지를 변형 시키거나 변형시키는 PHP 함수를 만들기 시작했습니다. 나는 시작하는 검정색 배경을 확인해야합니다, 그래서 이것은 내가 지금까지 무엇을 가지고 : (더이상)

function morph($img) { 

    list($width, $height) = getimagesize($img); 
    //$width = $size[0]; 
    //$height = $size[1]; 
    $tempImg = imagecreatetruecolor($width, $height); 

    //Create the image background 
    imagefilledrectangle($tempImg, 0, 0, $width, $height, imagecolorallocate($tempImg, 0, 0, 0)); 
    return $tempImg; 
} 

을하지만 모두가 나 적어도 브라우저의 관점에서, 깨진 이미지입니다 제공합니다. 무엇이 잘못 될 수 있습니까? 미리 감사드립니다.

편집 : 많은 사람들이 문제를 겪고있는이 문제를 해결하는 대신 검정색으로 채워진 인수에서 이미지와 동일한 크기의 트루 컬러 이미지를 만드는 방법을 만들면됩니다. 이 일을 위해 최선을 다할 것입니다. 그러나 도울 수 있다면 좋을 것입니다.

이 내 현재 시도 :

function morph($img) { 

    list($width, $height) = getimagesize($img); 
    //$width = $size[0]; 
    //$height = $size[1]; 
     $tempImg = imagecreatetruecolor($width, $height); 

     //Create the image background 
     imagefilledrectangle($tempImg, 0, 0, $width, $height, imagecolorallocate($tempImg, 0, 0, 0)); 
     return $tempImg; 
} 

같은 결과.

편집 2 : 문제의 원인을 찾았습니다! 결과를 스누핑 한 후 imagecreatetruecolor()가받는 치수가 유효하지 않음을 발견했습니다. 나는 getimagesize()와 내가 얻고있는 배열에서 잘못된 것을하고있다. 나는 무엇을 알아낼 필요가있다.

편집 3 : 문제는 getimagesize()입니다. 13 번 줄에 파일이나 디렉토리가 없다고합니다 (getimagesize가있는 줄). 뭐가 문제 야? 이것은 모두 문제였습니다.

+0

함수 호출의 오른쪽에이 오류가 표시됩니까? 그렇다면 도움이 될 것입니다. http://www.parse-error-unexpected-t-string.com/ 기본적으로 스크립트의 다른 부분에 세미 콜론 또는 클로우즈 중괄호가 누락되었을 수 있습니다. –

+0

아니요, 이전 질문에서 수정 된 다른 오류입니다. 나는 오래 전에 제거 했어야했다. –

답변

0

편집 3 : 문제는 getimagesize()에 있습니다. 13 번 줄에 파일이나 디렉토리가 없다고합니다 (getimagesize가있는 줄). 뭐가 문제 야?

그럼 당신은 당신이 함수에 잘못된 인수를 전달하는 것만 게시 된 코드로 잘못가는 뭐죠 우리가 확실히 말할 수있는 방법이 없습니다.

$ IMG는 이전에 resouce 핸들을 반환하는 imagecreate()를 사용하여 RAM에 생성 된 것입니다.

getimagesize ($ img)는 파일 경로가 매개 변수로 전달 될 것으로 예상하므로 핸들을 전달하면됩니다.

이것이 문제가되는 경우 치수를 함수에 전달하고 getimagesize()를 사용하여 선을 제거하여 문제를 해결할 수 있어야합니다.

이것은 모두 문제였습니다.

별로 없습니다. pr0wl은 원래의 문제점을 지적했으며,이를 제거하고 다른 문제점으로 교체했습니다.

+0

고맙습니다. 완전한. –

0

출력중인 파일의 MIME 유형을 image/png로 설정 했습니까?

편집 : 예 : header ("Content-type : image/png");

내가 추가 할 때까지 나는 한 번 같은 문제가있었습니다.

+0

예, 있습니다. 이 프로그램이 더 큰 프로그램의 일부라는 것을 기억하십시오. 그래서 나는 이미 다른 모든 것을 얻었습니다. –

1

은 실제로 $ width 및 $ heigth입니다.

+0

글쎄, 나는 그 안에 넣고있는 이미지와 동일한 직사각형 그리기 방법을 사용했다 ... 그래서 나는 그렇게 생각한다. –

0

헤더 내용 유형을 설정하지 않고 오류 로그를 확인하거나 스크립트를 실행하십시오. 스크립트가 실패하게 만드는 오류 메시지가 표시됩니다. 이 경우에는 '$ tempImg은 리소스가 아닙니다.'와 같은 것을 얻을 수 있습니다.

+0

그것은 아직도 나에게 부서진 이미지를 주었다. .. 그것은 그것을 할 것이어도. 게다가, 오류가있을 때 항상 이미지를 제공하지 않으면 예외가 발생하고 텍스트 형식으로 표시됩니다. –

0

클라이언트에 제공하는 파일의 종류를 지정해야합니다. 헤더 ("Content-type : image/something"); 무언가는 이미지의 종류입니다. 다른 인쇄물, 에코 또는 html이 페이지에 없으면 이미지가 손상됩니다.

+0

나는 이미 다른 코멘트에서 대답했다; 나는 스크립트를 작동시켜야하는데, 이제는 단순히 함수로 이미지를 변경하고있다. 코드의 나머지 부분이 처음에는 작동하지 않는 경우 특정 방법에 대해 질문을 게시하는 이유는 무엇입니까? 어쨌든,이 모든 일은 제가 작업하고있는 CAPTCHA 프로젝트를위한 것입니다. 확실히 영리를 목적으로하지 않으며 아마 출시하지도 않을 것입니다 ... 그러나 morph 메서드는 생성 된 문자를 뒤틀어 버릴 것입니다. 나는 나머지 코드를 사용하고 있는데, 이제는 이미지를 전달하기 전에 글자를 뒤틀리고 싶다. –