1001 像素寬的圖像切成三張,不給出 333 的三張圖塊。 它給出了 333、334 和 333,哪個圖塊獲得了額外的像素,決定圖片是否會恢復在一起。 寫這篇文章的明顯方法,將寬度除以計數,並為每個圖塊使用該大小,從 1001 到 667 圖像中刪除 2,333 像素,而沒有報告任何內容。 瓷磚本身看起來不錯。 損壞只有在它們並排後才會出現,作為接縫處的一條細線,在九塊 Instagram 網格上,這是每個訪客都能看到的唯一地方。
TL;DR: 拆分影像是一個重複的算術決定:當影像不均勻分割時,每次切割會落在哪裡。 從單一圓形序列計算每個邊界,可以通過結構計算 Tile N 的右邊緣瓷磚 N+1 的左邊緣,因此這些部分可以精確地重新組合。 經 Hashing 驗證:1001x667 圖像分成九個圖塊並貼上,產生的原始像素與原始像素相同,MD5,
6fc1f790a418dc1ed3ee3d11747f1c20。 天真方法從同一張圖片中刪除 2,333 像素。 那個 圖像分流器 在瀏覽器中運行並交回一個 zip。
在這裡拆分圖像意味著什麼?
將一張圖片切割成一組較小的圖片,完全平鋪,沒有重疊,也沒有剩下的。
兩種說法你想要的方式。 網格模式 需要多個行和列,因此 3 x 3 可以得到 9 個圖塊,無論圖像大小。 尺寸模式 以像素為單位的圖塊寬度和高度,而網格是其中的許多,右側列和底部行是剩餘的。
它背後的工作是具體的。 一張九件式 Instagram 網格,來自一張照片。 一張大地圖或海報分解成可列印的紙張。 精靈板切回框架。 一個分支作為輪播柱。 在它們的每一個中,碎片最終都會再次相鄰,這就是為什麼接縫比操作更重要的原因。
為什麼網格不均勻劃分?
因為影像尺寸是相機產生的任何東西,而三個很少進入。
像素是整數,所以切口要么落在像素邊界上,要么不存在。 寬度不是列數倍數的圖像有一個必須去某個地方的餘數,唯一的問題是在哪裡。
根據分流器產生的順序測量:
| 圖像寬度 | 揰 | 磁磚寬度 | 項 |
|---|---|---|---|
| 1000 | 3 | 333、334、333 | 1000 |
| 1080 | 3 | 360、360、360 | 1080 |
| 1001 | 7 | 143 x 7 | 1001 |
| 4032 | 5 | 806、807、806、807、806 | 4032 |
其餘的是傳播而不是傾倒。 三個部分的 1000 像素圖像給出 333、334、333,而不是 333、333、334,因為每個邊界都計算為 round(total * i / count) 來自同一個順序。 差異在一張圖像上是不可見的,並且對網格很重要,最終圖塊上的額外像素使最後一列明顯比其他列寬。
注意第三行。 1001 除以 7 恰好是 143,並且很多尺寸確實可以乾淨地劃分。 算術只有在他們沒有出現時才會出現。
你怎麼知道接縫處沒有丟失?
透過拆分圖像並將其重新組合在一起,然後比較像素而不是查看它們。
我產生了確定性噪音的 1001 x 667 圖像,因此每個像素都與其鄰居不同,任何重複或刪除的列對於哈希來說都是顯而易見的。 然後我使用工具自己的計劃將其分成 3 x 3,提取每個圖塊,然後將每個圖塊粘貼回其來自的座標:
source 1001x667 raw md5 6fc1f790a418dc1ed3ee3d11747f1c20
reassembled 9 tiles raw md5 6fc1f790a418dc1ed3ee3d11747f1c20
相同。 不相似,在視覺上沒有區別:相同的位元組。 沒有像素遺失,也沒有複製。
生產它的瓷磚的大小並不相同,這就是重點:
334x222 333x222 334x222
334x223 333x223 334x223
334x222 333x222 334x222
九個瓷磚,三個不同的寬度和兩個不同的高度,覆蓋 667,667 像素,剛好是 667 的 1001 倍。
現在是同一份工作的幼稚版本。 挐 floor(1001 / 3) 和 floor(667 / 3),每張圖使用 333 x 222,您覆蓋 999 x 666。 一個兩像素寬和一個像素高的條帶永遠不會變成任何瓷磚。 即 2,333 像素靜默丟棄,在照片上是圖片的右邊緣。
網格模式還是固定的磁磚尺寸?
網格 當零件的數量很重要。 尺寸 當每件的尺寸很重要。
| 你想要 | 模式 | 為什麼 |
|---|---|---|
| 九個飼料網格 | 網格,3 x 3 | 計數是要求 |
| A4 床單上的一張海報 | 尺寸 | 床單尺寸是要求 |
| 切成框架的精靈板 | 尺寸 | 框架大小是固定的,已知 |
| 輪廓的全景 | 網格,1 行 | 計數是輪播長度 |
這兩種模式對剩菜不一致,這就是它們之間的真正區別。 網格模式分配餘數,因此每個圖塊都在一個像素內。 大小模式為您提供您要求的大小,並將整個剩餘部分放在最後一行和最後一列。
在大小模式下,最後一行和列會發生什麼事?
它們出來的是較小的,這是故意的。
將 1000 x 800 的圖像拆分為 300 x 300 的圖塊,得到 4 x 3 的網格。 十二塊磁磚,其中六塊不是 300 x 300:
r0c3 100x300 r1c3 100x300 r2c3 100x200
r2c0 300x200 r2c1 300x200 r2c2 300x200
這些涵蓋 800,000 像素,正是來源。 另一種方法是將圖像裁剪成一整套的瓷磚,這意味著在右側悄悄地扔掉一個 100 像素的條帶,底部有一個 200 像素的條帶。 這樣做的工具可以為您決定圖片的邊緣無關緊要。
如果您想要等量的平鋪,請使用網格模式。 如果您想要給定尺寸的瓷磚並且圖像沒有被它劃分,那麼尺寸過小的邊緣片段就是誠實的答案。
為什麼檔案命名為 R01-C01?
因此,按名稱排序的檔案管理器會給您讀取順序,否則它不會這樣做。
排序是字母順序的,所以 tile-10 排序之間 tile-1 和 tile-2。 以錯誤的順序列出的十二件式網格重新組合,任何使用檔案名稱工作的人都會將第十行放在第二行所屬的地方。
數字被填充到最大索引的寬度,因此僅在需要時才會出現填充:
3 x 3 grid shot-r3-c3.png
12 x 12 grid My-Holiday-Photo-r01-c01.png ... My-Holiday-Photo-r12-c12.png
原始名稱被保留,帶有空格和任何不是單字字元的東西都變成連字號,因此來自手機的文件仍然告訴您它是什麼。
瓷磚的 png 還是 jpg?
巴布亞紐幾內亞,除非瓷磚是照片,而總尺寸是一個問題。
分割本身就是無損的:磁貼中的像素是來自來源的像素。 像巴布亞新幾內亞一樣儲蓄,因為這樣 巴布亞紐幾內亞 是一種無損格式。 將每張圖塊重新編碼為 JPG 即可節省,這在已經是 JPEG 的照片上意味著第二代損失。
與通常的 PNG 相比,分裂為首選 PNG 是有原因的。 JPEG 以 8 個方塊壓縮,其人工製品在這些方塊的邊緣最強。 每個圖塊邊界都是新文件中的一個新邊緣,編碼在不知道其鄰居的情況下,因此 JPEG 磁貼可以沿著您試圖使的接縫顯示出微弱的不連續性。 巴布亞紐幾內亞沒有這種行為。
品質 0.92 的 JPG 是您選擇時所寫的,這是一個合理的設定,仍然是第二代。 對於一張以社交為主的九張圖塊,無論如何都會重新壓縮它們,這是一筆可信的交易。 對於任何正在列印或重新組裝的東西,PNG。
你能做幾塊磁磚?
四百,即 20 x 20 的網格,限制是關於瀏覽器而不是算術。
每塊瓷磚在任何東西都被拉上拉鍊之前,變成了自己的畫布和自己的編碼 blob,所以四百塊圖案意味著四百幅畫布和一個標籤中的四百個編碼。 過去,編碼開始停滯不前,而不是慢慢結束。
21 x 21 -> That is 441 tiles. The limit is 400, which is a 20 by 20 grid.
第二張支票抓住另一端。 您不能將圖像切割成比沿該軸的像素更多的部分,因此從 50 像素高的圖像中要求 80 行以實際尺寸拒絕,而不是產生 30 塊零高度的瓷磚。
Instagram 上會排成九件式網格嗎?
碎片會是對的。 幻覺是否有效是一個單獨的問題,它有兩個部分。
首先,形狀。 饋電網格是方形單元格,因此方形源將 3 乘以 3 得到方形圖塊,一切都匹配。 一張 4:3 的照片 3 x 3 得到 4:3 的圖塊,而提要將每個圖塊獨立裁剪成一個正方形,從而破壞圖片。 在分裂之前將源裁剪或填充到正方形,而不是之後。
第二,順序。 一個提要首先填滿最新的,從左上角,向右移動。 所以你想要在左上角的圖塊必須是最後一個發布的。 發布順序與閱讀順序相反:從右下角的瓷磚開始,然後從左上角結束。 按照文件編號的順序發布它們會使圖片倒置並返回到前面。
接縫也不會是不可見的,因為網格在縮圖之間拉出很小的間隙。 效果是透過窗框而不是連續圖像看到的圖片,這是每個網格貼文的樣子和人們的期望。
跨紙印的圖案應該是多大的?
從紙張和印表機的解析度向後工作,並期望總和比您擁有的圖像大。
A4 為 210 x 297 毫米。 以每英吋 300 點為單位,這是仔細觀察的通常目標,即每張紙 2,480 x 3,508 像素。 因此,A4 的 3 x 3 的海報需要 7,440 x 10,524 像素的來源,即 78 兆像素。 最近手機的照片大約是 12。
所以這個工作的誠實版本通常是低於 300 dpi 的解析度,或更少的工作表,或接受列印是軟的。 在 150 dpi 時,相同的 3 x 3 需要 3,720 x 5,262,這是一台好相機的觸手可及。 分割不能添加細節;它只決定切口落在哪裡。
在列印之前而不是之後要解決的一件事。 消費性印表機無法列印到紙張的邊緣,因此每塊瓷磚都帶有白色的邊緣,九張膠帶一起貼在一起,透過圖片顯示九個白色邊框。 通常的答案是如果印表機支援,則列印無邊框,或沿著一個邊緣修剪每張紙並重疊。 這個工具完全切割,沒有流血,沒有重疊,所以重疊必須來自來源:拆分一個稍大的網格並接受丟失一條帶,或在分裂之前自己添加流血。
分裂會失去品質嗎?
切割沒有。 節省的力量,以及沒有人提到的調整大小肯定是。
每個圖塊都從來源圖像中繪製到完全大小的畫布中,一個來源像素到一個目標像素,不涉及縮放。 那是一份副本。 上面的哈希測試就是它的證明。
品質去的地方是編碼器,上面涵蓋了,完全之外的一件事:任何你上傳的圖塊都可能會調整它們的大小。 一個 360 x 360 的磁貼張貼到一個需要 1080 x 1080 的提要中,平台將被擴展,並且升級會發明像素。 如果磁磚注定要用於已知大小的地方,請將一個足夠大的來源拆分,以使每個圖塊至少有該大小。
為什麼下載是 zip 的?
因為九個檔案或四百個檔案不是瀏覽器可以一次交出一個,而不會發生爭執的東西。
大多數瀏覽器在第一個頁面上按順序觸發多個下載的頁面會在第一個頁面上被阻止,這是對想要在下載資料夾中放置 20 個內容的頁面的明智保護。 建造一個 拉鍊 在頁面中並提供一個文件是它的方式,它還使圖塊及其名稱保持不變,這是重新組裝很重要的部分。
檔案是建立在記憶體中,這是四百塊磁磚天花板的另一個原因:標籤包含來源圖像、每個瓷磚畫布、每個編碼的 blob 和完成的檔案。
什麼分裂不行
它將一個矩形切割成一個矩形的網格。 裡面沒有別的了。
一些映射工作流程想要的圖塊之間沒有重疊。 沒有出血或作物標記。 沒有非矩形片。 在拆分之前沒有自動裁剪到正方形。 沒有重新組裝,這是相反的工作,屬於 圖像合併, 涵蓋 它的指南.
如果您想要一個拼圖、馬賽克或重疊的圖塊,這不是那個工具,而且在開始之前,而不是在九個檔案登入下載資料夾後,這個差距就值得知道。
為什麼它在瀏覽器中運行?
因為從圖片中切出矩形是某種東西 畫布是原生的,而伺服器只在別人的磁碟上添加你的圖像副本。
圖片被解碼到標籤中,每個圖塊都畫在自己的畫布中,每個畫布都編碼 toBlob,並且該集合被拉鍊並回交。 沒有上傳,也沒有儲存任何東西。
人們分開的圖像並不總是作為提要的節日照片。 它們是平面圖、掃描文件、醫學圖像、內部系統的螢幕截圖、藝術品發布前的藝術作品。 對於這些,通常的替代方案會將整個畫面發送給服務,以換取您自己的機器在幾秒鐘內執行的操作。



