為什麼圖片被壓縮多次後會變綠,文字周圍會出現噪點?
可能圖片自身就不是純白色,然後在壓縮的時候,不同壓縮的時候,會將相近的顏色轉化為同一種顏色,轉化的程度在於採用不同程度的色表。當採用不同色表反覆壓縮後,就可能在一次次壓縮中,使得顏色失真。至於偏綠,可能是色表本身演算法導致的問題吧
我又想了想,可能還和放大縮小的時候,採用的演算法導致出現其他顏色也有關係吧。
非專業,答案僅供參考
應該是jpg壓縮。所謂有損的影象壓縮都是減掉高頻部分,jpg是先小波變換,你可以理解為傅立葉變換,本質上是差不多的。然後剪掉高頻的部分,因為人眼對高頻部分相對不敏感。什麼是高頻的部分呢,就是圖片裡的各種邊緣,顏色明暗變化比較激烈的地方。你的例子裡就是文字邊緣。正因為這一部分的在頻譜上被去掉了,變換回時域就會在文字周圍產生失真。至於為什麼會變綠這個我就不太瞭解,我猜測和你的壓縮比太高有關。壓縮比過高導致頻譜丟失太多,失真已經蔓延到低頻區也就是大面積的白色背景。
相似的是 多次轉載的新聞人像臉會變成一種很難看的洋紅
可能的原因,我沒細看。。。
https://
books。google。com/books?
id=fvSbCgAAQBAJ&pg=PA124&lpg=PA124&dq=jpeg+compress+turn+to+green&source=bl&ots=HSbULDkU3k&sig=ch5q_UsCNhZ7xuJfg4GITiNYlQ0&hl=en&sa=X&ved=0ahUKEwiUy-eZpJ7KAhXIbT4KHbxgBgMQ6AEIUTAH#v=onepage&q=jpeg%20compress%20turn%20to%20green&f=false
(gfw認證資源)
JPEG compression divides images into 8×8 blocks of pixels that are 。。。 more blue and less green; turn up Cr and the screen becomes more red and less green。
這是 Android 影象庫的一個 bug,
標準的 JPEG 在做色彩空間轉換的時候,會用至少 16 位元精度,
Android 圖快只用了 8 位元。
這個 bug 同時也影響了 Chrome 瀏覽器。
這個問題在 Android 7。0 和 Chrome 52 裡修復了。
參見
Use libjpeg-turbo for YUV->RGB conversion in jpeg encoder · google/skia@c7d01d3 · GitHub
想體驗的可以試試我寫的
JPEGreen Simulator
上一篇:此魚叫什麼名稱?