2013-06-28 53 views
-2

我正在使用PngCs dll爲asp.net中的Png圖像文件獲取塊數據,我能夠做到這一點,但現在我想更新該PNG的塊數據。要更改PNG圖像文件的元標記

我使用PngWriter,但它創建整個新文件而不會繼承塊數據。

 PngReader pngr = FileHelper.CreatePngReader(path); 
     pngr.GetMetadata().GetTxtForKey(PngChunkITXT.KEY_Title); 
     Response.Write(pngr.GetMetadata().GetTxtForKey(PngChunkITXT.KEY_Title)); 

下面的代碼是通過PngWriter寫入新的PNG圖像,我想嵌入新itxt塊在創建新的文件。

 PngReader pngr = FileHelper.CreatePngReader(origFilename); // or you can use the constructor 
     PngWriter pngw = FileHelper.CreatePngWriter(destFilename, pngr.ImgInfo, true); // idem 
     Console.WriteLine(pngr.ToString()); // just information 
     int chunkBehav = ChunkCopyBehaviour.COPY_ALL_SAFE; // tell to copy all 'safe' chunks 
     pngw.CopyChunksFirst(pngr, chunkBehav);   // copy some metadata from reader 

     for (int row = 0; row < pngr.ImgInfo.Rows; row++) 
     { 
      ImageLine l1 = pngr.ReadRowInt(row); // format: RGBRGB... or RGBARGBA... 

      pngw.WriteRow(l1, row); 
     } 
     pngw.CopyChunksLast(pngr, chunkBehav); // metadata after the image pixels? can happen 
     pngw.End(); // dont forget this 
     pngr.End(); 

備查點擊this link

+0

你能發表一些代碼嗎? – mitchfish36

+1

我盡力而爲,請不要沒有任何理由的投票。 – LearningAsp

+0

「而不繼承塊數據。」那是什麼意思?你想要完成什麼,取而代之的是什麼?你想用新的文本塊重寫相同的圖像嗎?請記住,PNG可以包含許多文本(和其他)元數據,您必須決定您想要做什麼。 – leonbloy

回答

0

的問題已經解決了通過使用CsXMpToolKit.dll,這是最好的選擇來從任何類型的文件的metadat 。

1

試試這個

 PngReader pngr = FileHelper.CreatePngReader(origFilename); 
     PngWriter pngw = FileHelper.CreatePngWriter(destFilename, pngr.ImgInfo, true);              
     pngw.CopyChunksFirst(pngr, ChunkCopyBehaviour.COPY_ALL); 
     pngw.GetMetadata().SetText(myKey, myText,false,false); // provide your own data 
     for (int row = 0; row < pngr.ImgInfo.Rows; row++)  { 
      ImageLine l1 = pngr.ReadRowInt(row); 
      pngw.WriteRow(l1, row); 
     } 
     pngw.CopyChunksLast(pngr, ChunkCopyBehaviour.COPY_ALL); 
     pngw.End(); // dont forget this 
     pngr.End(); 
+0

謝謝,但它不是這樣的,我沒有嘗試過,我嘗試了很多代碼使用這個庫,但作爲新的這個領域,我無法做到這一點。請支持新的開發人員,當你投票時,stackoverflow阻止我們,我認爲他們對我做了,現在我不能再發布,這是最悲傷的部分。 – LearningAsp

+0

你「試了很多代碼」,但是當我們要求顯示它時,你不會。這不是成爲新開發者的問題。上述工作?您可以嘗試http://entropymine.com/jason/tweakpng/檢查塊是否正常。 – leonbloy

+0

沒有它的不工作,我想我已經在我的上面的評論中提到過,我嘗試過使用SetText,但它對我的工作 – LearningAsp