濮阳杆衣贸易有限公司

主頁 > 知識庫 > flex壓縮圖片exif信息(作者/相機(jī))丟失問題解決

flex壓縮圖片exif信息(作者/相機(jī))丟失問題解決

熱門標(biāo)簽:中山外呼系統(tǒng)中間件 什么行業(yè)需要電話機(jī)器人 南昌crm外呼系統(tǒng)如何 廣州ai外呼系統(tǒng)業(yè)務(wù) 天津企業(yè)外呼系統(tǒng)代理商 無錫電銷外呼系統(tǒng)代理 地圖標(biāo)注多家店 外呼系統(tǒng)號碼顯示 車載電話機(jī)器人
在用flex的jpegencoder對圖片進(jìn)行壓縮的時(shí)候,exif信息會丟失,也就是圖片的作者,用的相機(jī),神馬的,全部都沒有了,怎么辦呢?

經(jīng)研究jpeg的文檔,最終解決這個問題
1.jpeg的文件格式,分成一個一個frame,每個frame以0xFF打頭,然后跟著一個標(biāo)識未,比如0xFFD8表示文件的開始,0xFFD9表示文件結(jié)束,緊接著標(biāo)識位的是這個frame的長度,長度不包括0xFF和標(biāo)識位,但包括這個2個字節(jié)的長度,比如一個frame開始了,先是一個0xFF然后是一個0xXX,然后是兩個0x0010,說明這個frame的長度是16,整個frame的長度其實(shí)是18,

2.我們要研究的是圖片的exif信息,他的標(biāo)識位是0xE1
而且這個0xE1有兩種情況,第一種,就是緊跟著文件頭,就是0xE1,第二種,就是在0xE1之前還有一個0xE0,
所以在把這個byteArray在如到圖片對象之前,先要獲取到這個0xE1的frame的所有數(shù)據(jù),代碼如下:
復(fù)制代碼 代碼如下:

//獲取0xFFE1 app1也就是exif信息
var tempData:ByteArray = new ByteArray();
//這里的e.target.data是圖片的原始byteArray
tempData.writeBytes(e.target.data,0,e.target.data.bytesAvailable);
tempData.position = 3; //讀取第四個字節(jié)
var exif:Number = tempData.readUnsignedByte();
if(exif == 0xE1) { //看這個字節(jié)是不是0xE1
this.Debug("有exif信息");
//讀一個長度
var exifLength:Number = tempData.readUnsignedShort();
file_item.exifArray.writeBytes(tempData,tempData.position-2,exifLength); //如果是,將exif信息讀入一個文件對象
} else if(exif == 0xE0) { //是e0,那么跳過這個frame,看下邊
tempData.position = 4;
var e0Length:Number = tempData.readUnsignedShort();
tempData.position = 4+e0Length;//跳過e0
tempData.position += 1;//跳過0xff
var isEx:Number = tempData.readUnsignedByte();
if(isEx==0xE1) {
var len:Number = tempData.readUnsignedShort();
file_item.exifArray.writeBytes(tempData,tempData.position-2,len);
}
}

然后處理完了這些,我們就需要把這段frame給插到壓縮之后的byteArray里
代碼的邏輯應(yīng)該一目了然的,嘿嘿
復(fù)制代碼 代碼如下:

if(file_item.exifArray.length>0) { //寫入exif信息
var desData:ByteArray = new ByteArray();
desData.writeBytes(oldData,0,2);//0xffd8
desData.writeByte(0xff);
desData.writeByte(0xe1);
desData.writeBytes(file_item.exifArray,0,file_item.exifArray.bytesAvailable);
desData.writeBytes(oldData,2,oldData.bytesAvailable);
desData.position = 0;
this.uploadFileTest(desData,file_item);
} else {
this.uploadFileTest(e.target.ba,file_item);
}
您可能感興趣的文章:
  • Python讀取圖片EXIF信息類庫介紹和使用實(shí)例
  • PHP實(shí)現(xiàn)顯示照片exif信息的方法
  • PHP exif擴(kuò)展方法開啟詳解
  • python通過pil模塊獲得圖片exif信息的方法
  • python用來獲得圖片exif信息的庫實(shí)例分析
  • Java讀取圖片EXIF信息的方法
  • PHP獲取Exif縮略圖的方法
  • iOS開發(fā)中用imageIO漸進(jìn)加載圖片及獲取exif的方法
  • Android開發(fā)之使用ExifInterface獲取拍照后的圖片屬性
  • Android下的EXIF是什么

標(biāo)簽:海西 滄州 攀枝花 欽州 泰州 佛山 呂梁 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《flex壓縮圖片exif信息(作者/相機(jī))丟失問題解決》,本文關(guān)鍵詞  flex,壓縮,圖片,exif,信息,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《flex壓縮圖片exif信息(作者/相機(jī))丟失問題解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于flex壓縮圖片exif信息(作者/相機(jī))丟失問題解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鸡西市| 平凉市| 东乌| 正镶白旗| 临西县| 望江县| 曲松县| 江津市| 孝感市| 东山县| 吉木乃县| 保康县| 湟源县| 类乌齐县| 渭源县| 义乌市| 镇安县| 桃园市| 巧家县| 南澳县| 喜德县| 乌海市| 龙陵县| 甘南县| 钦州市| 阿坝| 巴彦淖尔市| 苍梧县| 顺平县| 张家界市| 怀柔区| 东海县| 长治县| 二连浩特市| 罗定市| 安仁县| 牟定县| 扬中市| 南宫市| 武穴市| 兴化市|