อัตโนมัติ: เป็นไปได้หรือไม่ที่จะปรับขนาดภาพเป็นขนาดไฟล์สูงสุด?


1

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

มันจะเป็นการใช้งานที่ยอดเยี่ยมสำหรับ Quick Actions ของ MacOS Mojave เนื่องจากการอัปโหลดเว็บไซต์จำนวนมากไม่ยอมรับภาพ iPhone ขนาดเต็ม

ปรีชาญาณของฉันคือว่านี่เป็นปัญหาที่ค่อนข้างยากสำหรับ Automator ที่จะแก้ไขแม้จะมีการช่วยเหลือของการเขียนสคริปต์ทุบตี ฯลฯ โดยทั่วไปแอพพลิเคชั่นอย่าง Adobe Photoshop นั้นไม่ค่อยดีเท่าการทำนายขนาดไฟล์สุดท้าย เป็นต้นบางทีมันอาจลดขนาดภาพลงเรื่อย ๆ จนกว่ามันจะต่ำกว่าขนาดไฟล์สูงสุด ที่ง่ายที่สุดคือถ้าเป็นอรรถประโยชน์สำหรับสคริปต์นี้

ฉันคิดว่าจะถามว่า:

  • a) สิ่งนี้เป็นไปได้และ
  • b) จะทำอย่างไร?

เพื่อชี้แจงคุณหมายถึงการบีบอัดไฟล์ก่อนที่จะมีผลกระทบภาพหรือไม่ คุณสามารถเขียนสคริปต์เพื่อตรวจสอบว่าภาพเป็นแนวตั้งหรือแนวนอนปรับขนาดให้ปลอดภัยเช่น 800px แล้วบีบอัด
ʀ2ᴅ2

@ ʀ2ᴅ2ขอบคุณที่ถาม การปรับขนาดรูปภาพให้มีขนาดคงที่ผ่าน Automator นั้นจะครอบคลุมในบทช่วยสอนต่าง ๆ บนเว็บและไม่ยาก ฉันคิดว่าจะต้องปรับขนาดให้เหมาะสมกับขนาดไฟล์โดยเฉพาะ (เช่นปรับขนาดให้เหมาะสมกับขนาดไฟล์ที่ต้องการ)
Winterflags

คำตอบ:


2

ฉันสับสนเล็กน้อยกับวิธีการบีบอัดรูปภาพที่คุณต้องการใช้อย่างถูกต้อง ดังที่กล่าวไปแล้วนั่นก็คือ sipsตัวอย่างการทำงานที่ใช้การดึงไดเร็กตอรี่ของอิมเมจและก้าวผ่านรายการด้วยการปรับขนาดหากความกว้างไม่ใช่ 800px

property theWidth : 800

tell application "Finder"
    try
        ## Choose directory
        set imageDir to choose folder with prompt "Please select directory."

        ## Get list of items in diretory
        set the imageList to list folder imageDir without invisibles

        ## Step through images
        repeat with theImage in imageList

            ## Turn path to posix path
            set imagePos to quoted form of POSIX path of ((imageDir as text) & contents of theImage)

            ## Get image width
            set imgWidth to (do shell script "sips -g pixelWidth " & " " & imagePos & " " & "| tail -n1 | cut -d' ' -f4") as integer

            ## if not equal to set variable width resize
            if imgWidth ≠ theWidth then do shell script "sips --resampleWidth " & theWidth & " " & imagePos

        end repeat
    on error error_message
        display dialog error_message
    end try

นั่นเป็นเพียงตัวอย่างของสิ่งที่คุณสามารถทำได้ด้วยความกว้าง ตามที่ระบุไว้ในความคิดเห็นที่คุณสามารถตรวจสอบเพื่อดูว่ามีความกว้างหรือความสูงอีกต่อไปและปรับขนาดจากที่นั่น ถ้าคุณทำ man sips ในเทอร์มินัลคุณสามารถดึงข้อมูลทุกประเภท รหัสด้านบนใช้หางและตัดเพื่อตัดการคืนสินค้า การปรับขนาดทำได้ด้วย --resampleWidth. คุณสามารถ resample ตามความสูงด้วย --resampleHeight.

เกี่ยวกับลักษณะการบีบอัดหากเป็น PNG คุณสามารถใช้ Optipng . หากคุณต้องการสิ่งที่คุณสามารถเรียกใช้ด้วย PNG และ JPG ที่คุณสามารถใช้ได้ Trimage . AppleScript / Automater สามารถใช้สคริปต์ในการบีบอัดยูทิลิตี้ คุณจะต้องโทรจาก bin ตรวจสอบว่ามีการบีบอัดข้อมูลหรือไม่:

try
    set checkBin to "(ls usr/local/bin/optipng >> /dev/null 2>&1 && echo yes) || echo no"
    return do shell script checkBin
on error error_message
    return error_message
end try

ด้านบนคือการตรวจสอบ OptiPNG หากคุณต้องการตรวจสอบว่ามีการติดตั้งสิ่งที่ HomeBrew คุณสามารถใช้คำสั่งที่คล้ายกันใน /usr/local/Cellar.

เชลล์ที่กล่าวมาทั้งหมดสามารถทำได้อย่างสมบูรณ์ในเชลล์สคริปต์ มันขึ้นอยู่กับสิ่งที่คุณต้องการและวิธีที่คุณต้องการรันโค้ด


1
พิจารณาใช้ quoted form of เมื่อจัดการกับเส้นทางของไฟล์ วิธีนี้จะหลีกเลี่ยงปัญหาช่องว่างชื่อไฟล์ที่มีเครื่องหมายคำพูดและอักขระยกเว้น
Graham Miln

มันมีอยู่ในนั้น แต่ดูเหมือนว่าฉันจะลบมันเมื่อทำลายรหัส จะแก้ไข
ʀ2ᴅ2

1

ใช่ด้วยเชลล์สคริปต์

คุณสามารถเขียนเชลล์สคริปต์เพื่อทำสิ่งที่คุณต้องการและตัดคำนั้นในเวิร์กโฟลว์อัตโนมัติ

ใน Automator เท่านั้นไม่สามารถทำได้ Automator ไม่มีลอจิกการแตกกิ่งที่จำเป็นในการพิจารณาว่าจะหยุดเมื่อใด

ฉันไม่ทราบว่ามีทางลัดใดนอกจากการปรับขนาดและบีบอัดภาพขนาดต่าง ๆ จนกว่าจะบรรลุเป้าหมาย

สามารถทำได้ด้วยเครื่องมือในตัวที่มาพร้อมกับ macOS เช่น sips สำหรับการปรับขนาดภาพและ bash สำหรับการเขียนสคริปต์ตรรกะ

ดู ลดขนาดไฟล์ภาพให้มีขนาดที่แน่นอน สำหรับคำถามที่เกี่ยวข้องอย่างใกล้ชิด

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