2011-08-16 6 views
3

ImageMagick을 사용하여 Google 시스템에서 제품에 대한 제품 배지를 생성하고 있습니다. 제품 배지는 SO flair과 같으며 단지 몇 개의 합성 이미지와 일부 텍스트입니다. Windows를 실행하는 내 개발 컴퓨터에서 제대로 실행되기 때문에 스크립트에는 아무런 문제가 없습니다. 그러나, 내 프로덕션 시스템 (CentOS 5.1)에서는 텍스트를 제외한 모든 것을 렌더링합니다.Imagemagick에서 텍스트가 표시되지 않지만 오류가 발생하지 않습니다

글꼴 문제라고 생각했지만 글꼴 파일을 PHP 파일 위치에 복사해도 작동하지 않으며 전체 경로를 지정했을 때 작동하지도 않았습니다.

그리고 Linux 용 Windows 글꼴을 described here으로 설치할 때 작동하지 않습니다.

내가 convert -list font를 입력 한하고 Imagick가 알고있는 글꼴의 목록을 보여줍니다 여기 나와있는 절대 경로를 제공하는 시도하고 작동하지 않았다

Font: Times-BoldItalic 
    family: Times 
    style: Italic 
    stretch: Normal 
    weight: 700 
    glyphs: /usr/share/fonts/default/Type1/n021024l.pfb 
    Font: Times-Italic 
    family: Times 
    style: Italic 
    stretch: Normal 
    weight: 400 
    glyphs: /usr/share/fonts/default/Type1/n021023l.pfb 
    Font: Times-Roman 
    family: Times 
    style: Normal 
    stretch: Normal 
    weight: 400 
    glyphs: /usr/share/fonts/default/Type1/n021003l.pfb 

(parital 목록은 아래 그림 참조). 나는 또한 이름 만 사용하고 아직 아무것도 시도하지 않았다.

기본적으로 이미지가 나타나지만 텍스트 부분이 전혀 표시되지 않으며 오류가 발생하지 않습니다 (아래 이미지 참조).

이 코드에는 아무런 문제가 없습니다. Windows와 CentOS는 모두 최신 버전의 Imagick (6.7.1-4 및 6.7.1-3)을 실행하고 있습니다. 유일한 문제는 글꼴 일 수 있습니다. 나는 정상적인 TTF 글꼴을 올려 놓고 테스트하고 있습니다. 작동시키기 위해 특별한 글꼴이 필요합니까? 근무

Working Image

Broken Image

편집 부러 - QR 코드 및 등급의 차이를 무시합니다. 이는 작업 배지와 비 작동 배지가 두 개의 다른 서버에 있기 때문입니다.

업데이트 1 - 간단한 테스트 스크립트를 실행했는데 작동하지 않습니다. 이것은 내가 테스트로 실행 한 것입니다 : http://us2.php.net/manual/en/function.imagick-annotateimage.php 글꼴이 나타나지 않고 오류가 발생하지 않습니다.

또한 CentOS 시스템에서 글꼴을 복사하고 Windows 상자에서 글꼴을 시험해 보았지만 제대로 작동합니다. 글꼴은 단순히 CentOS에서 작동하지 않는 것 같습니다.

글꼴을 설정하지 않고도 해봤지만 Imagick이 기본 글꼴이나 다른 글꼴을 선택하고 Windows에서는 작동하지만 CentOS에서는 작동하지 않는다고 가정합니다. 나는 어떤 일이 일어나는지를보기 위해 다른 * nix 버전에서 이것을 시도 할 것이다. 발견 한 내용으로 업데이트됩니다.

업데이트 3 : 제가 생각하기로는 FreeType 라이브러리의 문제로 문제를 좁혔습니다. 포럼은 텍스트가 제대로 표시 되려면 FreeType을 설치해야한다고 말합니다. config.log를 보면 FreeType 설치 문제가 있음을 알 수 있습니다. 이것에 대한 어떤 머리도 고맙게 여기는 반면, 나는 Freetype을 다시 설치하고 다시 설치를 할 것입니다.

+0

은 가장 왼쪽에있는 3 별이에 채워집니다 모든 것을이 중요하다 ** Working ** 이미지 및 ** Broke ** 이미지에서 모두 비어 있습니까? –

+0

바코드도 다릅니다.) 그러나 주제 : 이미지가 imagemagic에서 작동하는지 확인하기 위해 간단한 (아주 기본적인) 스크립트를 사용해 보았습니까? (많은 코드를 디버그하는 것이 어렵습니다)? 당신이 원한다면 - 제발, 여기에 게시하십시오, 나는 당신이 훨씬 더 많은 도움을 얻을 것이라고 생각합니다. – XzKto

+0

이미지 차이점에 대해 죄송합니다. 작동중인 것은 로컬 데이터가있는 로컬 dev에서 가져온 것이고 작동하지 않는 것은 준비 서버에서 가져온 것이므로 데이터의 차이입니다. 나는 더 간단한 테스트 스크립트를 설치하고 여기에 게시 할 것이다. 하지만 제 명령 줄 테스트는 실패했습니다. 그것도 게시 할 것입니다. – JohnP

답변

1

Freetype을 설치할 수 없습니다. 실제로 서버에 Freetype을 설치 한 다음 --with-freetype-dir =/usr/local 옵션을 사용하여 ImageMagick을 다시 컴파일해야합니다. 여기서/usr/local은 Freetype 설치 경로입니다.

나는 소용돌이 것을주고 우리가 어떻게되는지 알려 주시기은 일반적으로/usr/지방/빈

믿습니다)

+0

그래,하지만 문제는 freetype가 이미 설치되었지만 --with-freetype = on 옵션에서 실패한 것입니다. 아마 설치 장소의 디렉토리를 정의해야한다고 생각합니다. 내가 말한대로 디렉토리 지정을 시도해 볼 수 있습니다. 아마도 도움이 될 것입니다. 감사! – JohnP

+0

두 번 확인하고 명령을 사용해야합니다 : --with-freetype-dir =/path/to/freetype – Brian

+0

죄송합니다. 돌아 오기 위해 너무 오래 걸렸습니다. 이제 스크립트가 작동한다는 것을 알았습니다! 우리의 시스템 관리자는 여러주기의 설치, 제거 및 재 컴파일을 거쳤습니다. 어쨌든, 일하고 일하십시오. 감사! – JohnP

관련 문제