ภาพรวม
Image Resizer เป็นแอปพลิเคชันบรรทัดคำสั่งที่สร้างด้วย .NET ซึ่งออกแบบมาเพื่อปรับขนาดรูปภาพ โดยช่วยให้คุณปรับขนาดรูปภาพที่ระบุได้ด้วยการกำหนดขนาดเป้าหมายเป็นไบต์และโฟลเดอร์เอาต์พุต
เครื่องมือนี้มีเป้าหมายเพื่อคงความใกล้เคียงกับรูปภาพต้นฉบับ ความแตกต่างใดๆ ควรอยู่ภายในขอบเขตที่สายตามนุษย์ยอมรับได้
เอาต์พุตของเครื่องมือนี้มุ่งเป้าไปที่ค่าคะแนนความคล้ายคลึงทางภาพ 90% ขึ้นไปในการทดสอบเปรียบเทียบโดยใช้อัลกอริทึม cross correlation
การผสานการทำงาน Import / Export
ไฟล์ที่รองรับสามารถประมวลผลได้โดยใช้ฟังก์ชัน export ของ Glasswall Engine ฟังก์ชันนี้จะส่งออกไฟล์ ZIP ที่มีรูปภาพทั้งหมดที่แยกออกมาจากเอกสารต้นฉบับ
ฟีเจอร์นี้ช่วยให้สามารถประมวลผลรูปภาพแบบกำหนดเองได้ และจากนั้นสามารถแทรกกลับเข้าไปในเอกสารต้นฉบับได้โดยใช้ฟังก์ชัน import
อย่างไรก็ตาม มีข้อจำกัดบางประการของการผสานการทำงานที่ควรทราบ:
- การเปลี่ยนชื่อไฟล์ของรูปภาพให้แตกต่างจากชื่อเดิมจะทำให้ไม่สามารถนำรูปภาพกลับไปวางในเอกสารได้ในระหว่างกระบวนการ import
- ชื่อไฟล์แยกความแตกต่างระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- หากขนาดไฟล์ของรูปภาพใหญ่กว่าขนาดเดิม การ import อาจไม่สำเร็จ
เครื่องมือนี้ช่วยให้ผู้ใช้ปรับขนาดรูปภาพให้มีขนาดเป้าหมายที่น้อยกว่าหรือเท่ากับขนาดไฟล์ต้นฉบับ เพื่อให้มั่นใจว่ากระบวนการ import จะราบรื่น
การใช้งาน:
gw_image_resizer [options]
ตัวเลือก:
-i, --in <filename> (REQUIRED) Input file name
-o, --out <filename> (REQUIRED) Output file name
-t, --target <max size in bytes> (REQUIRED) Target maximum output file size
-l, --memory-limit <max memory limit percentage> (OPTIONAL) An optional number that specifies the maximum amount of system memory percent the image resize is limited to [default: 50]
-T, --temp-dir <path> (OPTIONAL) Defines the path to an existing directory where temporary files are created during processing [default: $TMPDIR/.gw-image-resizer]
-?, -h, --help Show help and usage information
--version Show version information
รหัสการออก
| รหัสการออก | คำอธิบาย |
|---|---|
| 0 | ปรับขนาดสำเร็จแล้ว หรือไฟล์มีขนาดตามเป้าหมายอยู่แล้ว |
| 1 | ขนาดเป้าหมายของไฟล์อินพุตน้อยกว่าศูนย์ |
| 2 | ไม่พบไฟล์อินพุต |
| 3 | ไม่สามารถโหลดไฟล์อินพุตได้ เนื่องจากไฟล์เสียหายหรือไม่รองรับ |
| 4 | ไม่สามารถโหลดไฟล์อินพุตได้ด้วยสาเหตุที่ไม่ทราบแน่ชัด |
| 5 | บางส่วนของพาธเอาต์พุตไม่มีอยู่ |
| 6 | ไม่สามารถเขียนไฟล์เอาต์พุตได้ด้วยสาเหตุที่ไม่ทราบแน่ชัด |
| 7 | เกิดข้อผิดพลาดทั่วไปในไลบรารี magick ขณะพยายามปรับขนาด |
| 8 | ไม่สามารถทำให้ได้ขนาดเป้าหมายตามต้องการ |
| 9 | ข้อผิดพลาดที่ไม่คาดคิด |
| 10 | ตัวเลือกการจำกัดหน่วยความจำไม่ได้อยู่ระหว่าง 1-100 |
| 11 | ไม่พบพาธไดเรกทอรีชั่วคราว |
| 12 | ไม่สามารถเขียนไปยังไดเรกทอรีชั่วคราวได้ |
ไดเรกทอรีชั่วคราว
เพื่อให้มั่นใจว่าการปรับขนาดไฟล์จะสำเร็จ ระหว่างการประมวลผล เครื่องมือ image resizer อาจใช้ไดเรกทอรีชั่วคราวที่อยู่ที่ "$TMPDIR/.gw-image-resizer" หรือ "/tmp/.gw.image-resizer" โดยสามารถแทนที่เป็นไดเรกทอรีที่มีอยู่และเขียนได้ด้วยตัวเลือกบรรทัดคำสั่งเพิ่มเติม "--temp-dir" (หรือ "-T" แบบย่อ)
หมายเหตุ: หากไดเรกทอรีชั่วคราวไม่สามารถเขียนได้ (เช่น ผู้ใช้ปัจจุบันไม่มีสิทธิ์เพียงพอ) แอปพลิเคชันจะล้มเหลวเมื่อจำเป็นต้องแคชข้อมูลการประมวลผลภาพ ขอแนะนำให้ทดสอบว่าผู้ใช้สามารถเขียนลงในไดเรกทอรีได้ เพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นเป็นครั้งคราวระหว่างการทำงาน
การจำกัดหน่วยความจำ
โดยค่าเริ่มต้น การจัดสรรหน่วยความจำที่ใช้สำหรับการปรับขนาดรูปภาพจะถูกจำกัดไว้ที่ 50% ของหน่วยความจำระบบ โดยสามารถแทนที่เป็นค่าระหว่าง 1-100 ได้ด้วยตัวเลือกบรรทัดคำสั่งเพิ่มเติม "-l"
การรองรับ
ขณะนี้เครื่องมือรองรับสิ่งต่อไปนี้:
- JPEG
- PNG
- BMP
- TIFF (ดูปัญหาที่ทราบของ GeoTiff)
- GIF
ไฟล์อื่น ๆ ที่ ImageMagick รองรับอาจโหลดได้อย่างถูกต้อง แต่ยังไม่ได้มีการนำไปใช้งานอย่างชัดเจน
กลยุทธ์การปรับขนาด
ไฟล์ภาพที่รองรับทั้งหมดจะผ่านชุดวิธีการเพื่อให้ได้ขนาดเป้าหมาย ตัวอย่างเช่น:
คุณภาพการบีบอัด:
ไฟล์ JPEG / JPG ถูกตั้งค่าคุณภาพไว้ที่ 25
ไฟล์ PNG ถูกตั้งค่าไว้ที่ 100
ไฟล์ประเภทอื่นจะคงเดิม อย่างไรก็ตาม วิธีการบีบอัดจะถูกตั้งค่าเป็น LZW เสมอ
การเพิ่มประสิทธิภาพ GIF
เนื่องจาก GIF สามารถประกอบด้วยหลายภาพและหลายเลเยอร์ จึงมีการเพิ่มประสิทธิภาพที่เป็นไปได้เพื่อช่วยลดขนาดไฟล์
หากเลเยอร์ต่าง ๆ ของภาพมีขนาดแตกต่างกัน Image Magick จะทำการเพิ่มประสิทธิภาพเพื่อลดขนาดไฟล์
มิฉะนั้น GIF จะถูก Coalesced ซึ่งเป็นการรวมส่วนที่คล้ายกันของภาพในลำดับเพื่อลดขนาด
ความโปร่งใสจะถูกเพิ่มประสิทธิภาพในขั้นตอนนี้ด้วย โดยแทนที่ข้อมูลพิกเซลที่ซ้ำกันตลอดทั้งลำดับด้วยความโปร่งใส
Quantize
จากนั้นภาพทั้งหมดจะถูก Quantized ซึ่งจะจำกัดจำนวนสีไว้ที่ 128 สี โดยจะไม่เปลี่ยนค่า หากเดิมมีจำนวนน้อยกว่านี้อยู่แล้ว
การลดขนาด
หากยังไม่ถึงเป้าหมาย ภาพจะถูกปรับขนาดต่อไปจนกว่าจะถึง โดยความละเอียดจะถูกลดลงเหลือ 95% ของต้นฉบับอย่างต่อเนื่องจนกว่าจะถึงเป้าหมาย หรือจนไม่สามารถลดความละเอียดลงได้อีก
ปัญหาที่ทราบ
การประมวลผลอาจลบข้อมูลตำแหน่งออกจากพิกเซลใน GeoTIFF นอกจากนี้ TIFF ทั่วไปอาจมีสีสลับกันในภาพระดับสีเทา
ไลบรารีของบุคคลที่สาม
| ชื่อไลบรารี | เวอร์ชันไลบรารี | ประเภท | ประเภทใบอนุญาต | URL ใบอนุญาต | URL โปรเจกต์ | URL ต้นทาง |
|---|---|---|---|---|---|---|
| System.CommandLine | 2.0.0-beta4.22272.1 | ไลบรารี | MIT | ลิงก์ | ลิงก์ | ลิงก์ |
| System.CommandLine.Hosting | 0.4.0-alpha.22272.1 | ไลบรารี | MIT | ลิงก์ | ลิงก์ | ลิงก์ |
| Magick.NET-Q8-AnyCPU | 13.10.0 | ไลบรารี | Apache-2.0 | ลิงก์ | ลิงก์ | ลิงก์ |
เครื่องมือ Image Resizer ของ Glasswall ใช้แพ็กเกจ NuGet "Magick.NET-Q8-AnyCPU" ซึ่งเป็น wrapper ของ dotnet สำหรับ ImageMagick
ตัว ImageMagick เองเป็นเครื่องมือโอเพนซอร์สฟรีที่ใช้สำหรับแก้ไขและจัดการภาพดิจิทัล