จะเปลี่ยน DPI ของไฟล์ PNG ได้อย่างไร? (ในบรรทัดคำสั่งโดยไม่มี ImageMagick)


9

ฉันกำลังมองหาวิธีการเปลี่ยน DPI ในไฟล์ภาพ PNG การใช้ ImageMagick นี่เป็นเรื่องง่าย:

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

ปัญหาคือฉันจะเรียกใช้คำสั่งนี้จากแอปพลิเคชันของฉันทำงานบน VM หลายเครื่องซึ่งไม่ได้ติดตั้ง ImageMagick ฉันสามารถผลักดันแพ็คเกจการอัปเกรดเป็น VMs เหล่านี้ แต่ในกรณีของ ImageMagick ที่จะเพิ่มประมาณ 30MB ไปยังชุดอัปเกรดซึ่งค่อนข้างมากสำหรับกรณีการใช้งานของฉัน

เรื่องสั้นสั้น : มีวิธีที่ฉันสามารถเปลี่ยน DPI ในไฟล์ PNG โดยใช้เครื่องมือบรรทัดคำสั่งขนาดเล็ก (ตามขนาดแพ็คเกจ) หรือไม่?

อีกทางเลือกหนึ่งการเปลี่ยนไบต์ในไฟล์อิมเมจแบบ raw ก็ไม่เป็นไรเช่นกันหากมีคนรู้ว่าจะมองหาพวกเขาที่ใด ...


คุณอาจลองทำการปรับใช้เอง การจัดการชิ้นส่วน PNG นั้นตรงไปตรงมามากพอ ถ้าคุณตั้งใจจะใช้ DPI หนึ่งอันกับพวกเขาทั้งหมดคุณไม่จำเป็นต้องมีฟังก์ชั่นการตรวจสอบการทำงาน - เพียงแค่คัดลอกpHYsก้อนสำเร็จรูปที่ทำจาก PNG ที่ทำใน Photoshop
Zdenek

คำตอบ:


6

2.10 MB เล็กเพียงพอหรือไม่ ถ้าใช่ใช้NConvertและชุดคำสั่งเช่น:

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

NConvert มีไว้เพื่ออะไร

XnView เป็นแอพพลิเคชั่นที่ใช้ GUI คุณสามารถเปลี่ยนและจัดการภาพโดยใช้ส่วนต่อประสานกราฟิกกับผู้ใช้ NConvert มีความสามารถเหมือนกับ XnView แต่เป็นเครื่องมือบรรทัดคำสั่งและไม่มีส่วนต่อประสานกราฟิกกับผู้ใช้ คุณสามารถใช้ NConvert ในสคริปต์แบทช์หรือแอปพลิเคชันอื่นสามารถเรียกมันได้

ลิงก์ที่มีประโยชน์

  • คู่มือเริ่มต้นและWikiพร้อมตัวอย่างเพื่อเริ่มต้น
  • ไฟล์ช่วยเหลือเพื่อดูว่าพารามิเตอร์บรรทัดคำสั่งใดพร้อมใช้งาน (อัปโหลดบน pastebin)
  • กราฟิก front-end โดยใช้ Nconvert เป็นXnConvert ใช้สิ่งนี้เพื่อสร้างและส่งออกไฟล์แบตช์ Nconvert
  • ฟอรัมสำหรับ Xnconvert และ Nconvert สำหรับ

ขอบคุณดูดีและอาจมีประโยชน์ในอนาคต! ในกรณีนี้ฉันจบการศึกษารูปแบบ PNG (ซึ่งโชคดีที่ง่ายพอ) และเปลี่ยนภาพผ่านแอปกำหนดเองขนาดเล็ก (15 บรรทัดใน PHP)
johndodo

@johndodo ฟังดูน่าสนใจ คุณต้องการแบ่งปันใบสมัครของคุณกับเราหรือไม่?
nixda

แต่น่าเสียดายที่ผมไม่ได้เสรีภาพที่จะทำอย่างนั้น แต่คุณสามารถทำเช่นเดียวกันโดยการอ่าน (ที่ดี) คุณสมบัติของรูปแบบไฟล์ PNGและทำให้แอปที่มีการเปลี่ยนแปลงที่สรวงก้อน มันง่ายจริงๆเมื่อคุณรู้ว่าคุณกำลังทำอะไร
johndodo

1

คุณบอกว่าคุณจะใช้คำสั่งนี้ "จากใบสมัครของคุณ" และสิ่งนี้ทำให้ฉันเชื่อว่าคุณได้เขียนใบสมัครนี้หรือกำลังรักษาอยู่ ที่กล่าวว่ามีImageMagick APIสำหรับหลายภาษาและคุณสามารถใช้หนึ่งในนั้นเพื่อเพิ่มฟังก์ชันการทำงานลงในโปรแกรมที่คุณมีอยู่ การเพิ่มขึ้นของขนาดแพคเกจจะขึ้นอยู่กับภาษาของแอปพลิเคชันของคุณที่เขียนและไม่ว่าคุณจะเชื่อมโยงไลบรารีแบบคงที่หรือแบบไดนามิก แต่ฉันคิดว่ามันจะเล็กกว่าการเพิ่ม 30 MB อย่างมีนัยสำคัญ

ตัวเลือกอื่นไม่รวมแพ็คเกจ ImageMagick ทั้งหมด คุณสามารถดาวน์โหลดไฟล์ ImageMagick Zip (ซึ่งมีขนาดเพียง 13 MB BTW) และแยกconvertเครื่องมือออกมาเท่านั้นมันคือการพึ่งพาและแจกจ่ายให้กับ VM ของคุณ มีเครื่องมือที่เรียกว่าDependency Walkerที่คุณสามารถใช้เพื่อกำหนดว่าการพึ่งพาของconvertเครื่องมือนั้นคืออะไร


1

ใช้-sizeธงในNetpbm pnmtopngโปรแกรม หน่วยที่ใช้คือพิกเซลต่อเมตร ตัวอย่างต่อไปนี้จะตั้งค่า 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.3 MB และตัวติดตั้ง Python 2.7.5 คือ 15.5 MB
Drew Chapin

5
นั่นจะเป็นการปรับขนาดภาพไม่ใช่เปลี่ยน DPI
Bobby

0

บรรทัดคำสั่ง Image Magick ที่เหมาะสม "แปลง" สำหรับสิ่งนี้จะใช้อาร์กิวเมนต์ -resample:

convert image.png -resample 150x150 -units pixelsperinch ../ImagesAdjusted/image.png
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.