圖表保存下來不清晰怎么辦?教你獲取專欄圖片原圖

我的ARK數(shù)據(jù)整理表終于實現(xiàn)了跨平臺更新。高興之余,我很快就發(fā)現(xiàn)了一個問題:圖片不清晰?。?!
如下圖所示,直接右鍵打開或另存的專欄圖片不是很清晰,不能滿足打印需求。

很快我把目光放到了地址欄:
i0.hdslb.com/bfs/article/{40位16進制}.png@1320w_1980h.webp
可以觀察到,圖片的文件名分為兩部分:"{40位16進制}.png"和"@1320w_1980h.webp"
于是大膽猜測:前面的PNG就是上傳的原圖存放的地址。@后面包含寬高信息的文件名,則代表實際向服務(wù)器請求的壓縮圖片的寬高和格式,而這個寬高和格式則是根據(jù)當(dāng)前瀏覽器內(nèi)核的類型生成的。請求發(fā)出后,B站的圖片CDN根據(jù)請求的寬高和格式,返回對應(yīng)的壓縮圖片。
于是我們得到了獲取原圖的方法:直接把@后面的文件名刪除再請求!
按照這個方法,確實得到了清晰的圖片,分辨率與上傳時一致。

把圖片另存為,再和上傳時的原圖比對SHA256校驗值,發(fā)現(xiàn)完全一致。說明獲取的圖片和上傳的原圖在文件級別相同。

那么對于上傳并選擇打水印的PNG截圖,能獲取到與原圖分辨率一致且無壓縮的圖片嗎?答案是肯定的。

另外根據(jù)實測,對于這張圖片,Chromium內(nèi)核的瀏覽器返回的是WEBP格式的圖片,大小200KB左右;而iOS設(shè)備上的Safari、老版Edge、IE瀏覽器返回的都是PNG格式的圖片,而且壓縮了分辨率之后的圖片竟然比源文件還大,達到了驚人的4MB。

我們還可以請求一個其他分辨率的壓縮圖片。把寬高信息改為800x800,可以看到返回了一個533*800分辨率的圖片,大小僅65.7KB。沒有返回一個壓扁了的正方形圖片,說明服務(wù)器壓縮時是強制保持原比例的。


實際上大多數(shù)網(wǎng)站對于頭像等需要多種尺寸的圖片,都是這么處理的。