2009-10-19 5 views
0

asp.net 응용 프로그램에서 축소판 이미지를 만드는 것이 내가 생각한 것보다 더 고통스럽게 보입니다.asp.net 응용 프로그램에서 imagemagick 프로세스 인스턴스를 다시 사용하십시오.

처음에는 System.Drawing stuff를 사용했지만 고정 된 캔버스에서 간단한 크기 조정을하기 위해 작성해야하는 코드의 양에 만족하지 못했습니다. 그런 다음 Microsoft가 System에 대해 논란의 여지가있는 경고에 대해 읽었습니다. 드로잉은 asp.net 웹 컨텍스트에서 작동하지 않을 수도 있고 마지막으로 비트 맵 작업의 성능이 다소 나쁠 수도 있습니다.

축소판을 생성하려면 Imagemagick (IM)으로 전환했습니다. 이것은 PHP에서 IM을 사용하고 새로운 System.Diagnostics.Process를 만드는 경험이있는 간단한 작업입니다.

그러나 한 요청 (30 개 이상)에서 많은 엄지 손가락을 생성해야 할 때 CPU 사용량이 지붕 (100 %)을 통과하여 마지막 엄지 손가락이 만들어 질 때까지 그대로 있습니다. 물론 이미지는 일단 캐시되었지만 여전히 캐시됩니다. 캐시되지 않은 엄지 손가락이 만들어지면 영원히 멈추지 말아야 할 서버에 다른 응용 프로그램이 있기 때문에 걱정됩니다. 당신이있는 Imagemagick에 익숙하지 않은 경우

가, 여기에 내가 그것을 사용하는 방법의 예입니다

그래서 새로운 Convert.exe를 인스턴스를 생성하는 각 이미지에 대한
/path/to/im/convert.exe large.jpg ...some options... small.png 

(새 System.Diagnostics.Process가를 통해) 아마도 서버에 너무 많은 CPU 부하가 걸릴 것입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? Imagemagick에서 다른 이미지 생성 솔루션으로 전환하는 것은 옵션이 아닙니다.

추신 : 예, 이전 질문에 대한 답변입니다. imagemagick in asp.net via command line 캐싱 솔루션을 사용 하겠지만, 문제가 될 수있는 많은 양의 데이터로 작업 할 때 높은 CPU 사용률을 보였습니다.

답변

0

최초의 변환은

convert.exe (first_image.jpg ...some options... -write first_image_small.png +delete) (... second image ...) last_image ... options ... last_image_small.png 

이 방법 같은 것을 사용할 수 있습니다 시작하기 전에 변환 할 필요가 모든 이미지를 알고 당신이 변환하고자하는 모든 이미지에 대한 새로운 프로세스를 생성 할 필요가 없습니다만큼 .

너무 많은 CPU 시간을 차지하는 이미지 변환이 걱정된다면 imagemagick 프로세스의 우선 순위 등급을 변경하여 변환이 필요한 이미지를 요청한 사용자에게만 영향을 줄 수 있습니다. 변환.

+0

옵션으로 보입니다. 감사합니다. – Max

관련 문제