2012-11-03 3 views
2

pharo로 하드 드라이브의 이미지 파일 크기를 조정하려고합니다. 이것이 내 현재 수행 방법입니다.Smalltalk (Pharo)에서 이미지 파일 크기 조정 (JPEG)

img := ImageReadWriter formFromFileNamed: 'picture.jpg'. 
scaledimage := img scaledIntoFormOfSize: 100. 
scaledimage writeJPEGfileNamed: 'scaledPicture.jpg'. 

이 방법이 좋은 방법일까요? 또한이 이미지의 jpeg 압축 품질을 지정하는 방법이 있습니까?

감사합니다.

+0

Form 클래스에도 magnify : by : 메소드가있는 것 같습니다. 왜이 메소드가 사각형을 인수로 사용하는지 이해할 수 없습니다. 하지만 어쩌면이 가능성도 있습니다!? –

답변

2

좋아,이 작업을 수행 할 수있는 방법을 발견하고 내 솔루션을 공유하고 싶었다. 코드는 다음과 같습니다.

img := ImageReadWriter formFromFileNamed: 'pic.jpg'. 
scaledimage := img magnifyBy: 0.8. 
PluginBasedJPEGReadWriter 
    putForm: scaledimage 
    quality: 95 
    progressiveJPEG: false 
    onFileNamed: 'scaledPicture95.jpg'. 
scaledimage writeJPEGfileNamed: 'scaledPictureDfl.jpg'. 

이 방법으로 이미지의 배율은이 경우 0.8입니다. 요인이 1보다 큰 경우에도 작동합니다. 또한 JPEG 품질을 지정할 수 있습니다. 나는이 예제에서 95를 선택했다. 프로그레시브 JPEG 플래그는 이미지를 만들 수 있습니다. 이미지는로드 할 때 브라우저에서 미리보기 품질로 표시되고 더 많은 데이터가 전송 될수록 좋습니다. 이것은 모든 브라우저에서 지원되지는 않습니다! 마지막 줄은 선택 사항이며 기본값으로 두 번째 JPEG를 비교로 저장합니다. 나는 이것이 이것이 미래에 이것을 찾는 사람들에게 도움이되기를 바랍니다.

1

나는 약 PluginBasedJPEGReadWriter을 몰랐다.

여기에 Smagick이 있습니다. 그것은 ImageMagick과 OSProcess를 필요로합니다.

완전한 이미지 조작 라이브러리가 필요한 경우 유용 할 수 있습니다.