เครื่องมือสำหรับการเพิ่มประสิทธิภาพ JPEG? [ปิด]


114

คุณรู้หรือไม่ว่ามีเครื่องมือใดบ้าง (แนะนำให้ใช้บรรทัดคำสั่ง) ในการปรับแต่ง JPEG โดยอัตโนมัติและไม่สูญเสียซึ่งฉันสามารถรวมเข้ากับสภาพแวดล้อมการสร้างของเราได้ สำหรับ PNG ฉันกำลังใช้PNGOUTและโดยทั่วไปแล้วจะประหยัดแบนด์วิดท์ / ขนาดภาพได้ประมาณ 40%

อย่างน้อยที่สุดฉันต้องการเครื่องมือที่สามารถดึงข้อมูลเมตาออกจาก JPG ได้ - ฉันสังเกตเห็นกรณีแปลก ๆ ที่ฉันพยายามสร้างภาพขนาดย่อจากภาพถ่ายและไม่สามารถทำให้มันเล็กกว่า 34 kB ได้ หลังจากตรวจสอบเพิ่มเติมฉันพบว่าข้อมูล EXIF ​​ยังคงเป็นส่วนหนึ่งของรูปภาพและภาพขนาดย่อมีขนาด 3 kB หลังจากลบข้อมูลเมตา

และนอกเหนือจากนั้น - เป็นไปได้หรือไม่ที่จะเพิ่มประสิทธิภาพ JPG โดยไม่สูญเสีย เครื่องมือเพิ่มประสิทธิภาพ PNG พยายามใช้กลยุทธ์การบีบอัดที่แตกต่างกันการเริ่มต้นแบบสุ่มของการเข้ารหัส Huffmann เป็นต้น

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


คุณกำลังบอกว่า EXIF ​​มีมูลค่าประมาณ 10KB ใน JPG ที่ปรับให้เหมาะสมก่อนที่ EXIF ​​จะถูกลบออก?!?!?! สงสัยมีอะไรอยู่!
netrox

มันเป็นบล็อก EXIF ​​ทั้งหมดจากกล้องดิจิทัลรวมถึงรายละเอียดเล็ก ๆ น้อย ๆ เกี่ยวกับภาพถ่ายนี้ (ค่าแสงเวลาชัตเตอร์ ฯลฯ ... )
chris166

@netrox chris166 รายละเอียดเหล่านั้นใช้พื้นที่ไม่มากสิ่งที่ใช้พื้นที่มากคือการแสดงตัวอย่าง (ข้อมูลไบนารี)
Ariel

1
บทความเปรียบเทียบที่น่าสนใจสองบทความซึ่งแสดงรายการยูทิลิตี้ด้านล่าง: การเปรียบเทียบ JPEG Lossless Compression Tools, มิถุนายน 2014 ; JPEG มาตรฐานเครื่องมือเพิ่มประสิทธิภาพกุมภาพันธ์ 2013
dma_k

@Ariel: โปรไฟล์ ICC มีแนวโน้มที่จะใช้พื้นที่ขนาดใหญ่ ฉันเห็นข้อมูลไบนารีโปรไฟล์ ICC มากกว่า 500KB
saurabheights

คำตอบ:


68

ฉันใช้ libjpeg สำหรับการดำเนินการที่ไม่สูญเสีย มันมีjpegtranเครื่องมือบรรทัดคำสั่งที่สามารถทำทุกอย่างที่คุณต้องการ ด้วยตัวเลือก commandline -copy noneข้อมูลเมตาทั้งหมดจะถูกถอดออกและ-optimizeทำการเพิ่มประสิทธิภาพแบบไม่สูญเสียของการบีบอัด Huffmann นอกจากนี้คุณยังสามารถแปลงรูปภาพเป็นโหมดโปรเกรสซีฟ-progressiveได้ แต่อาจทำให้เกิดปัญหาความเข้ากันได้ (มีใครรู้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้หรือไม่)


5
ว้าวฟังดูดี หากใครสนใจสามารถดาวน์โหลด Windows ได้ที่gnuwin32.sourceforge.net/packages/jpeg.htm
chris166

ฉันจะเลือกอันนี้ มันลดภาพพื้นหลังของฉันจาก 62 kB เป็น 49 kB ในโหมดโปรเกรสซีฟ อีกภาพ (27 kB) ลดลงเหลือ 23 kB ประหยัดได้ 15-20% โดยไม่สูญเสียคุณภาพ!
chris166

2
โปรเกรสซีฟทำงานได้ดีในทุกอย่างข้อเสียเปรียบเพียงอย่างเดียวคือการใช้ CPU มากขึ้นในการถอดรหัส (ไม่มากพอที่จะมีความสำคัญ)
Ariel

1
โปรเกรสซีฟมักจะใหญ่กว่าพื้นฐานสำหรับไฟล์ที่น้อยกว่า 9k
Collin Anderson

3
โปรเกรสซีฟต้องการหน่วยความจำมากขึ้นในการถอดรหัส สามารถสตรีม jpegs ปกติได้: คุณต้องถอดรหัสเป็นส่วนเล็ก ๆ เท่านั้น ในการถอดรหัส JPG แบบโปรเกรสซีฟคุณต้องเก็บภาพที่คลายการบีบอัดทั้งหมดไว้ในหน่วยความจำพร้อมกัน
jcupitt

72

ฉันเขียนGUI สำหรับเครื่องมือปรับแต่งรูปภาพทั้งหมดที่ฉันสามารถหาได้รวมถึงMozJPEGและjpegoptimเพิ่มประสิทธิภาพตาราง Huffman การสแกนแบบโปรเกรสซีฟและ (เป็นทางเลือก) ลบข้อมูลเมตาที่มองไม่เห็น

ImageOptim ทุบมัน

หากคุณไม่มี Mac ฉันก็มีเว็บอินเตอร์เฟสพื้นฐานที่ใช้งานได้กับทุกแพลตฟอร์ม


5
ยอดเยี่ยม ท่านต้องการปุ่ม Flattr หรือเข้าร่วม Gittip.
Thilo

2
ImageOptim และ ImageAlpha ยอดเยี่ยมมาก!
Jon z

เครื่องมือที่ยอดเยี่ยม - ข้อเสนอแนะเล็กน้อย เหตุใดจึง จำกัด JPEGoptim ไว้ที่คุณภาพ 80% - ภาพพื้นหลังขนาดใหญ่มักจะต้องการเพิ่มเป็น 60% หรือต่ำกว่านั้น thx
niico

ทำไมต้องลบข้อมูล EXIF : /
Adrien Be

@AdrienBe 1. ความเป็นส่วนตัว. คุณอาจไม่ต้องการให้ทุกคนบนเน็ตรู้ตำแหน่ง GPS ของคุณ 2. เนื่องจากในไฟล์ที่บันทึกจาก Photoshop อาจมีขยะ XML จำนวนเมกะไบต์ฝังอยู่ในไฟล์
Kornel

12

[WINDOWS เท่านั้น]

RIOT (Radical Image Optimization Tool) นี่คือเครื่องมือปรับแต่งภาพที่ดีที่สุดที่ฉันพบ!

http://luci.criosweb.ro/riot/

คุณสามารถรับภาพขนาด 10MB ลงไปที่ 800KB ได้อย่างง่ายดายผ่านการสุ่มตัวอย่างย่อย รองรับ PNG, GIF และ JPEG มันยังรวมเข้ากับเมนูตามบริบทเพื่อให้คุณสามารถส่งรูปภาพไปที่นั่นได้โดยตรง ช่วยให้คุณสามารถหมุนปรับขนาดใหม่บีบอัดเป็น KB ที่ระบุและอื่น ๆ ยังมีปลั๊กอินสำหรับ GIMP และ IrfanView และสิ่งอื่น ๆ

นอกจากนี้ยังมี DLL ให้ใช้หากคุณต้องการรวมเข้ากับโปรแกรมของคุณเองหรือโปรแกรม java script / c ++

อีกทางเลือกหนึ่งคือhttp://pnggauntlet.com/ PNGGAUNTLET ใช้เวลาตลอดไป แต่ก็ทำได้ดีทีเดียว

[WINDOWS เท่านั้น]


7
คำเตือน: RIOT ดูดี แต่มันติดตั้ง TuneUp และห่วยโดยไม่ถามคุณ .. ฉันจะจัดประเภทนี้เป็นมัลแวร์
Daniel W.

1
@DanFromGermany พูดถูก ดูรีวิวที่นี่: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless

1
มันไม่เคยเกิดขึ้นจนกระทั่งเมื่อไม่นานมานี้
เบ็น

แจ้งเตือนมัลแวร์! ตัวจัดการการดาวน์โหลด Chrome เตือน RIOT เป็นมัลแวร์
ruhong

8
FYI: มีไฟล์. zip แบบพกพาสำหรับ RIOT ที่ไม่มีมัลแวร์หรือตัวติดตั้งใด ๆ เพียงแค่เลื่อนลงในหน้าดาวน์โหลด luci.criosweb.ro/riot/download
Goyuix

12

บริการใหม่ที่เรียกว่าJPEGminiให้ผลลัพธ์ที่น่าทึ่ง น่าเสียดายที่ออนไลน์เท่านั้น แก้ไข : พร้อมใช้งานสำหรับ Windows และ Mac แล้ว


ตอนนี้เรามีแอพ Mac แล้ว (การเปิดเผย: ฉันอยู่ในทีมพัฒนา)
DanJ

4
ฉันไม่รู้ว่าคุณเป็นผู้เขียนหรือไม่ แต่แอปนั้นทำให้ผู้ใช้เข้าใจผิด หากคุณเรียกใช้jpegquality.cบนภาพ "ขนาดเล็ก" เพื่อตรวจจับปริมาณการบีบอัดจากนั้นบีบอัดต้นฉบับด้วย imagemagick ที่มีคุณภาพเท่ากัน => คุณจะได้ผลลัพธ์ที่เหมือนกันสิ่งประดิษฐ์ JPEG เดียวกันในทั้งสองภาพ Imagemagick อาจเป็นโอเพ่นซอร์ส แต่นั่นไม่ได้ทำให้ใช้งานได้และจากนั้นอ้างว่าคุณพัฒนาเทคโนโลยีการบีบอัดใหม่
nice ass

@onetrickpony: ฉันไม่ได้มีส่วนเกี่ยวข้องกับพวกเขา แต่อย่างใด
Eduardo Molteni

@niceass คุณรู้ได้อย่างไรว่า JPEGmini ใช้รหัส ImageMagick? การทราบปัจจัยด้านคุณภาพจะเหมือนกับผลลัพธ์จาก IM นั้นไม่สามารถพิสูจน์ได้ ฉันเดาว่าพวกเขาบีบอัดรูปภาพอีกครั้งโดยลดปัจจัยด้านคุณภาพลงโดยอาจใช้การกรองเล็กน้อยและใช้เมตริกคุณภาพเพื่อตัดสินใจว่าจะหยุดเมื่อใด
โคอัน

ฉันรัน JPEGmini ล่าสุดบนรูปภาพที่ฉันเคยส่งออกจาก ImageMagick ก่อนหน้านี้และมีรายงานว่า JPEGmini ถูกเรียกใช้แล้วซึ่งฉันจำไม่ได้ว่าทำ การเรียกใช้ jpegtran -optimize -copy none บนรูปภาพเดียวกันจะลดขนาดลง 12 KB
koan

10

ลองทำตามคำแนะนำข้างต้น - โดยส่วนตัวแล้วฉันได้รับการบีบอัดแบบไม่สูญเสีย

ภาพตัวอย่างของฉันมีขนาดดั้งเดิม 67,737 ไบต์

เมื่อใช้ kraken.io มันลดลงเหลือ 64,718 เมื่อใช้ jpegtran มันลดลงเหลือ 64,718 เมื่อใช้ yahoo smush-it มันลดลงเหลือ 61,746 การใช้ imagemagick (-strip) มันลดลงเหลือ 65,312

ตัวเลือก smush.py ดูดี แต่การติดตั้งซับซ้อนเกินไปสำหรับฉันที่จะทำอย่างรวดเร็ว

jpegrescan ก็ดูมีแนวโน้มเช่นกัน แต่ดูเหมือนว่าจะเป็น unix และฉันใช้ windows

jpegmini ไม่สูญเสีย แต่ฉันไม่สามารถบอกความแตกต่างได้ (ลดลงเหลือ 22,172)

แอพ Altrasoft jpegstripper ของแท่นไม่ทำงานบน windows 7 ของฉัน

jpegoptim ไม่ใช่ windows - ไม่ดีสำหรับฉัน

Riot (รักษาคุณภาพที่ 100%) ลดลงเหลือ 63,416 และเมื่อตั้งค่าการสุ่มตัวอย่างโครมาไว้ที่ระดับสูงทำให้ลดลงเหลือ 61,912 - ฉันไม่รู้ว่ามันไม่สูญเสียหรือไม่และฉันคิดว่ามันดูเบากว่าเดิม .

ดังนั้นคำตัดสินของฉันคือ yahoo smushit หากต้องไม่สูญเสีย


jpegrescan ทำงานบน Windows หากคุณดื้อรั้น มันลดขนาดเหมือนเวทมนตร์ (5-15% โดยไม่มีการสูญเสียคุณภาพ) ซึ่งน่าทึ่งมากเพราะมันเพิ่งสั่งการสแกนแบบโปรเกรสซีฟใหม่เพื่อสั่ง AFAIK (คุณอาจสังเกตเห็นสิ่งเดียวกันในโปรแกรมอื่น ๆ บางครั้งไฟล์จะเล็กลงเล็กน้อยใน Photoshop หากคุณเลือกจำนวนการสแกนที่แตกต่างกันโดยไม่มีเหตุผลชัดเจน) นอกจากนี้มันถูกสร้างขึ้นโดยหนึ่งในคนที่สร้าง x264 เขาเป็นอัจฉริยะในด้านการบีบอัด
Camilo Martin

9

ฉันจะลอง Imagemagick มีตัวเลือกบรรทัดคำสั่งมากมายฟรีและมีใบอนุญาตที่ดี http://www.imagemagick.org

ดูเหมือนว่าจะมีตัวเลือกที่เรียกว่า Strip ที่อาจช่วยคุณได้: http://www.imagemagick.org/script/command-line-options.php#strip


ขอบคุณ! ไม่ทราบว่า ImageMagick สามารถทำได้
chris166

7

ImageOptim เนียนจริงๆ ตัวเลือกบรรทัดคำสั่งที่โพสต์โดยผู้เขียนจะเติมข้อมูล GUI และแสดงความคืบหน้า ฉันใช้ jpegtran เพื่อเพิ่มประสิทธิภาพและแปลงเป็นโปรเกรสซีฟจากนั้น ImageOptim สำหรับการเพิ่มประสิทธิภาพแบบก้าวหน้าเพิ่มเติมและสำหรับไฟล์ประเภทอื่น ๆ

นอกจากนี้ยังพบการใช้โค้ดสคริปต์ซ้ำในฟอรัมนี้ (ไฟล์ทั้งหมดถูกแทนที่):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done

4

ในกรณีที่ใครก็ตามที่กำลังมองหาฉันได้เขียน Smush.it ของ Yahoo เวอร์ชันออฟไลน์ มันจะเพิ่มประสิทธิภาพ png, jpgs และ gif โดยไม่สูญเสีย (ภาพเคลื่อนไหวและภาพนิ่ง):

http://github.com/thebeansgroup/smush.py


ใช้งานได้ดี แต่มีปัญหากับการบีบอัด png :(

4

คุณสามารถใช้jpegoptimซึ่งจะเพิ่มประสิทธิภาพไฟล์ jpeg โดยไม่สูญเสียค่าเริ่มต้น --strip-allตัวเลือกแถบข้อมูลทั้งหมดฝังพิเศษ คุณยังสามารถระบุโหมดการสูญเสียด้วยไฟล์--maxสวิตช์ซึ่งมีประโยชน์เมื่อคุณบันทึกภาพด้วยการตั้งค่าคุณภาพสูงมากซึ่งไม่จำเป็นสำหรับเช่น เนื้อหาเว็บ

คุณจะได้รับการปรับให้เหมาะสมเช่นเดียวกับjpegtran (ดูคำตอบของ OutOfMemory) แต่ jpegoptim ไม่สามารถบันทึกลงใน jpegs แบบโปรเกรสซีฟ


4

ฉันได้เขียนเครื่องมือบรรทัดคำสั่งที่เรียกว่า 'picopt' (คล้ายกับ ImageOptim) ที่ใช้โปรแกรมภายนอกเพื่อเพิ่มประสิทธิภาพ JPEGs, PNGs, GIFS, GIFS แบบเคลื่อนไหวและแม้แต่เนื้อหาที่เก็บถาวรของหนังสือการ์ตูน (CBR / CBZ)

เหมาะสำหรับใช้กับ homebrew บนระบบ OS X หรือ Linux ที่คุณติดตั้งเครื่องมือเช่น jpegrescan, jpegtran, optipng, gifsicle เป็นต้น

https://github.com/ajslater/picopt


มี Windows รุ่นนี้หรือไม่?
starbeamrainbowlabs

หากคุณสามารถติดตั้ง posix dependencies ในสภาพแวดล้อม windows เช่น cygwin ได้ คุณจะเป็นคนแรกที่ทดสอบแม้ว่า
AJ Slater

3

ฉันก็จะแนะนำImageMagick มีตัวเลือกบรรทัดคำสั่งเพื่อลบข้อมูลเมตา EXIF

mogrify -strip image.jpg

มีเครื่องมืออื่น ๆ อีกมากมายที่ทำสิ่งเดียวกัน

เท่าที่การบีบอัด JPEG ใหม่ทำได้ JPEG มีความสูญเสียในการเริ่มต้นดังนั้นการบีบอัดรูปแบบใดก็ตามจะส่งผลต่อคุณภาพของภาพเท่านั้น อย่างไรก็ตามหากคุณมีการเข้ารหัสภาพแบบไม่สูญเสียโปรแกรมเข้ารหัสบางตัวจะทำงานได้ดีกว่าภาพอื่น ๆ ฉันได้พบว่า JPEGs ทำด้วย Photoshop อย่างสม่ำเสมอดูดีขึ้นกว่าเมื่อเข้ารหัสด้วย ImageMagick (แม้จะมีขนาดไฟล์เดียวกัน) เนื่องจากเหตุผลที่ซับซ้อน นอกจากนี้ (และสิ่งนี้เกี่ยวข้องกับคุณ) ฉันรู้ว่าอย่างน้อย Photoshop ก็สามารถบันทึก JPEG ได้ตามที่ปรับให้เหมาะสมซึ่งหมายความว่าพวกเขาลดความเข้ากันได้กับบางสิ่งที่คุณอาจไม่สนใจเพื่อบันทึกสองสาม KB ตรวจสอบให้แน่ใจว่าคุณไม่มีโปรไฟล์สีใด ๆ ฝังอยู่และคุณอาจประหยัดได้อีกสองสาม KB


น่าสนใจ ฉันคิดเสมอว่าคุณภาพ 90% เหมือนกันในเครื่องมือรูปภาพทั้งหมด Photoshop เป็นเครื่องมือเดียวที่ใช้ค่าสัมประสิทธิ์ DCT ที่เหมาะสมหรือไม่?
chris166

1
แม้ว่า 90% จะเหมือนกันในเครื่องมือต่างๆจนกว่าฉันจะลองบันทึกภาพเดียวกันใน Photoshop และ Imagemagick ฉันพบว่าประมาณ 70% ใน Save for Web ใน Photoshop สร้างไฟล์ที่มีขนาดเท่ากับ 92% ใน Imagemagick แต่ไฟล์ Photoshop มีคุณภาพดีกว่าอย่างเห็นได้ชัด ฉันไม่รู้ว่าเครื่องมืออื่นทำได้อย่างไร
David Johnstone

คุณรู้หรือไม่ว่าจะทำการลอกข้อมูลเมตาดาต้า EXIF ​​โดยใช้ ImageMagick เวอร์ชัน PHP ได้อย่างไร
Sonny

@Sonny ไม่จริง แต่คุณอาจสนใจในฟังก์ชันนี้: php.net/manual/en/function.imagick-stripimage.php
David Johnstone

ขอบคุณเดวิดนั่นคือสิ่งที่ฉันค้นพบ นี่คือหัวข้อของฉัน: stackoverflow.com/questions/2540068
Sonny

2

ฉันอยากจะแนะนำให้ใช้http://kraken.ioซึ่งเป็นเว็บแอปที่เร็วเป็นพิเศษซึ่งจะเพิ่มประสิทธิภาพไฟล์ PNG และ JPEG ของคุณได้ดีกว่า smush.it


2

ฉันแนะนำให้ใช้ JpegOptim มันฟรีและดีจริงๆคุณสามารถระบุคุณภาพขนาดที่คุณต้องการ ... และใช้งานง่ายในบรรทัดคำสั่ง

JpegOptim


1

ฉันขอแนะนำสิ่งนี้เพื่อความโปร่งใสใกล้เคียง:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

มันใช้ImageMagick 's convertและjpeg-recompressจากJPEG การเก็บถาวร

ทั้งสองเป็นโอเพ่นซอร์สและทำงานบน Windows, Mac และ Linux คุณอาจต้องการปรับแต่งตัวเลือกด้านบนเพื่อความคาดหวังด้านคุณภาพที่แตกต่างกัน

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