2011-09-20 8 views
0

에서 PNG로 PSD를 변환하는 데 도움이 필요 : 웹 응용 프로그램 서버를 stagging에있는 동안내가 다음 명령을 사용하여 GraphicsMagick에서 PNG로 PSD를 변환하려고 GraphicsMagick

#gm convert file.psd -flatten file.png 

모든 문제를 보지 않는다.

In GraphicsMagick 1.3.12 : gm convert: Too much image data in file. 

하거나 하나 :

In GraphicsMagick 1.2.10 : gm convert: Memory allocation failed (unable to allocate cache info) [Cannot allocate memory]. 

가장 말도 안되는 부분은 그것이 작동 내가 프로덕션 서버에 웹 응용 프로그램을 이동하면 는 PSD 파일의 일부는 다음과 같은 오류 메시지가 나타납니다 stagging 서버는 있지만 프로덕션 서버에서는 작동하지 않습니다. 스테이징 서버는 VMWare의 FreeBSD이며 프로덕션 서버는 물리적 서버입니다.

인터넷에서 발견 된 문서가 거의 없습니다. 몇 달 전 여기 스레드 만 : http://sourceforge.net/mailarchive/forum.php?thread_name=20110301013714.GC15521%40node99.net&forum_name=graphicsmagick-help

같은 문제는 언급했지만 대답이 없습니다.

여기서 도움을 얻을 수 있는지 궁금합니다. 아니면 내가 틀렸어, ImageMagick을 선택해야한다.

+0

들이 동일한 아키텍처를 가지고 있습니까 (내 개발 컴퓨터에) 아무런 문제가 일하지? i386 또는 x86_64? FreeBSD와 GraphicsMagick은 두 서버에서 동일합니까? 두 서버의 메모리 크기는 얼마입니까? –

+0

동일한 오류가 발생했습니다. 우리의 경우에는 64 비트에서만 발생하지만 32 비트 박스에서는 발생하지 않습니다. HTH –

+0

@Nico den Boer, 네, 맞습니다. 나는 너와 같은 의견을 나눈다. 64 비트 시스템에서만 발생했습니다. GM은 정말 신뢰할 수 없다. 우리는 IM으로 옮겼고 모든 것이 작동합니다.오늘까지, 나는 또 다른 테스트를했다, GM는 64 비트에서 아직도 버그가있다. –

답변

0

프로덕션 서버의 스테이징 VM보다 프로세스 당 메모리 제한이 낮을 수 있습니다. 즉, 제한은 아마도 실제 하드웨어가 아닌 소프트웨어에 의해 부과됩니다.

제한은 사용자 단위 (또는 per user-class) 일뿐만 아니라 시스템 전체 (sysctl 사용) 일 수 있습니다.

% sysctl -Aa|fgrep kern.max 

을 실행하고 두 서버 간의 출력을 비교해보십시오 (kern.maxdsiz 및 kern.maxssiz가 특히 중요 함). 또한 단순히 웹 서버 사용자로 한계를 실행 해보십시오.

% su   # become root 
% su -m www # become www 
% limits 

출력을 다시 비교하십시오.

마지막으로 스테이징 시스템이 단일 파일 변환 만 처리하기 때문에 프로덕션 서버가 다른 메모리를 사용하는 것과 같은 다른 용도로 단순히 메모리를 사용하고 있기 때문에 한도를 맞추지 못할 수도 있습니다 ?

+0

안녕하세요. Mikhail T 님, 도움을 제공해 주셔서 감사합니다. 이 경우 GM이 64 비트에서 버그가 있기 때문입니다. 간단한 PSD 파일의 경우 작동하지만 PSD 파일이 64 비트 시스템에서 3 개 이상의 그래픽 레이어 인 경우 GM은 작동하지 않습니다. –

+0

얼마 전에 FreeBSD에서 GM 포트를 유지했기 때문에 필자는 저자에게 건강한 존경심을 가지고 있습니다. 나는 당신이 그 버그를 그들에게보고하면, 그것을 즉시 고칠 것입니다. –

0

나는이 정확한 문제에 부딪혔다. 그것은 그래픽 매직의 한계로 보입니다. -debug all 스위치를 사용하면 psd의 디코더가 프로세스 당 사용 가능한 것보다 많은 메모리를 할당하려고 시도하는 것을 볼 수 있습니다.

예를 들어, 나는 jpg로 엄지 손가락으로 원했던 6MB psd를 가지고있었습니다. GM은 즉시 그것을 전부 팽창 시키려고했기 때문에 그것을 할 수 없었다. 그리고 이것은 64GB의 RAM을 필요로 할 것이다 (이것은 8GB 만 가지고있는 나의 개발 기계에있다).

나는 ImageMagick이에서 동일한 명령을 실행하며

관련 문제