PNG 파일의 DPI를 변경하는 방법? (ImageMagick이없는 명령 행에서)


9

PNG 이미지 파일에서 DPI를 변경하는 방법을 찾고 있습니다. ImageMagick을 사용하면 쉽습니다.

$ convert -density 150 -units pixelsperinch file.png file.png

문제는 ImageMagick이 설치되어 있지 않은 여러 VM에서 실행되는 응용 프로그램 에서이 명령을 실행한다는 것입니다. 업그레이드 패키지를 이러한 VM으로 푸시 할 수 있지만 ImageMagick의 경우 업그레이드 번들에 약 30MB가 추가되므로 사용 사례에 비해 너무 많습니다.

짧은 이야기 : 작은 (패키지 크기와 같은) 명령 줄 도구를 사용하여 PNG 파일의 DPI를 변경할 수있는 방법이 있습니까?

선택적으로 원시 이미지 파일에서 바이트를 변경해도 원하는 위치를 알면 괜찮습니다.


자신의 구현을 고려할 수 있습니다. PNG 청크를 조작하는 것은 간단합니다. 특정 DPI 하나만 모두 적용하려는 경우 작동하는 체크섬 기능이 필요하지 않습니다 pHYs. Photoshop에서 만든 PNG에서 미리 만들어진 덩어리를 복사하기 만하면 됩니다.
Zdenek

답변:


6

2.10MB로 충분합니까? 그렇다면 NConvert 와 다음과 같은 배치 명령을 사용하십시오.

nconvert -out png -dpi 150 -keepdocsize -keepfiledate mysource.png

NConvert는 무엇입니까?

XnView는 GUI 기반 응용 프로그램으로, 그래픽 사용자 인터페이스를 사용하여 이미지를 변경하고 조작 할 수 있습니다. NConvert는 XnView와 거의 동일한 기능을 수행하지만 명령 줄 도구이며 그래픽 사용자 인터페이스가 없습니다. 배치 스크립트에서 NConvert를 사용하거나 다른 응용 프로그램에서이를 호출 할 수 있습니다.

유용한 링크

  • 초보자 가이드Wiki 시작하는 몇 가지 예
  • 사용 가능한 명령 줄 매개 변수를 확인하는 도움말 파일 (pastebin에 업로드)
  • Nconvert를 사용하는 그래픽 프런트 엔드는 XnConvert 입니다. 이것을 사용하여 Nconvert 배치 파일을 생성 및 내보내기
  • Xnconvert 및 Nconvert 포럼

고마워요, 멋져 보이고 아마도 앞으로 나아질 것입니다! 이 경우 PNG 형식 (다행히도 간단했습니다)을 연구하고 작은 사용자 정의 앱 (PHP의 15 줄)을 통해 이미지를 변경했습니다.
johndodo

@ johndodo 이거 흥미로운 데. 신청서를 우리와 공유하고 싶습니까?
nixda

불행히도 나는 그것을 할 자유가 없지만 PNG 파일 형식의 (위대한!) 사양을 읽고 pHYs 덩어리 를 변경하는 앱을 만들어서도 같은 일을 할 수 있습니다 . 당신이 무엇을하고 있는지 알면 정말 간단합니다.
johndodo

1

"응용 프로그램에서"이 명령을 실행한다고 언급했으며 이로 인해이 응용 프로그램을 작성했거나 유지 관리 중이라고 생각합니다. 즉, 여러 언어에 대한 ImageMagick API 가 있으며 그 중 하나를 사용하여 기존 프로그램에 기능을 바로 추가 할 수 있습니다. 패키지 크기의 증가는 응용 프로그램이 작성되는 언어와 라이브러리를 정적으로 또는 동적으로 연결하는지 여부에 따라 다르지만 30MB보다 크게 작을 것이라고 생각합니다.

다른 옵션은 전체 ImageMagick 패키지를 포함하지 않는 것입니다. 당신은 다운로드 할 수 있습니다 ImageMagick이 zip 파일 (만 13메가바이트 BTW입니다), 그냥 추출 convert도구를과의 의존성과 VM의 해당 배포 할 수 있습니다. 도구 의 종속성이 무엇인지 확인하는 데 사용할 수있는 Dependency Walker 라는 convert도구가 있습니다.


1

netpbm pnmtopng 프로그램 -size에서 플래그를 사용하십시오 . 사용 된 단위는 미터당 픽셀입니다. 다음 예제는 newfile.png를 300dpi로 설정합니다.

pngtopnm <oldfile.png | pnmtopng -size='11811 11811 1' >newfile.png

0

글쎄, 당신은 잠재적으로 파이썬 스크립트를 사용할 수 있습니다.

#!/usr/bin/python
im = Image.open("in.png")
nx, ny = im.size
im2 = im.resize((int(nx*1.5), int(ny*1.5)), Image.BICUBIC)
im2.save("out.png")

소스 .


Python 3.3.2 설치 프로그램 (소스 코드 제외)은 19.3MB이고 Python 2.7.5 설치 프로그램은 15.5MB입니다.
Drew Chapin

5
DPI를 변경하지 않고 이미지 크기가 조정됩니다.
Bobby

0

이에 적합한 Image Magick "convert"명령 행은 -resample 인수를 사용하는 것입니다.

convert image.png -resample 150x150 -units pixelsperinch ../ImagesAdjusted/image.png
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.