# exif 這次在接到要將user拍下的照片上傳供[ComfyUI](https://github.com/comfyanonymous/ComfyUI)產生Ai生圖使用時使用爆出很奇怪的error(就是跟error code毫不相關),經過多方測試才發現無法成功產圖的照片都是經由手機拍攝後存到相簿的(不包含選擇檔案時現場拍攝),並且ios與android都有相同情況,本來在思考是否是Heic等圖片格式問題,但研究了一下base64檔頭的差異真的怎麼翻都找不出原因啊啊啊! 什麼是exif呢 Exif可以附加於JPEG、TIFF、RIFF等檔案之中,為其增加有關數位相機拍攝資訊的內容和索引圖或圖像處理軟體的版本資訊。 ![image](https://hackmd.io/_uploads/Bkwi2szda.png) 看到後其實蠻變態的,也可以看到其實在手機內拍攝下來若沒有經過設定,也會記錄留下拍照的經緯度,所以在遇到問題時還查到有人透過辨別exif來做壞事呢。 如果你曾經想過為什麼很多人手機正著拍側著拍反著拍,再Google相簿內打開時,卻還能夠維持總是正面的方向也是因為當下會紀錄手機被翻轉了多少,再轉譯顯示時再進行轉換層就可以避免映射的圖片方向錯誤了。 為了解決這問題可以使用[exif-js](https://github.com/exif-js/exif-js)進行讀取與操作,但我使用上遇到框架遇到久久未更新的問題所以無法使用,後來使用了[ExifReader](https://github.com/mattiasw/ExifReader)。 但他們都並未提供將exif消除的方法,筆者也參考了幾片大概理解了可以將圖片轉換成16進位讀取特定的檔頭辨別可以將它移除,但這方法實在是太麻煩了,並且還會遇到不同版本的手機ex: iphone在不同代產出的編碼可能不一樣處理起來太麻煩了,最後筆者是將圖片轉換base64映射於canvas再重新將圖片讀出就可以拿到存粹的圖片摟。 如果希望對於解法以及原理有更深入的了解可以參考許多文章,這邊附上整理的很好的[exif相關筆記](https://zhuanlan.zhihu.com/p/25216999)。