2008-08-31 80 views
5

任何人都可以建議如何裁剪圖像,讓我們說jpeg,而不使用任何.NET框架結構,只是原始字節?由於這是Silverlight中唯一的*方法...圖像裁剪C#沒有.net庫

或者指向一個庫?

我不關心渲染,我想在上傳之前操作jpg。

*在Silverlight中沒有可用的GDI +(System.Drawing)或WPF(System.Windows.Media.Imaging)庫。

Lockbits要求GDI +,澄清問題

使用fjcore:http://code.google.com/p/fjcore/來調整,但沒有辦法裁剪:(

回答

2

ImageMagick做了很好的工作。如果你真行與換手的編輯任務您服務器...

(真的嗎?在Silverlight中處理圖像的推薦方法是原始字節工作嗎?那......令人難以置信的跛腳。)

0

silverlight在哪裏執行? 是否有任何理由向客戶端發送完整的圖片讓客戶端進行裁剪? 做它在服務器上...(如果你沒有創建的圖像編輯器,是..)

3

你可以很容易地在fjcore中自己寫作物。與代碼啓動調整器

http://code.google.com/p/fjcore/source/browse/trunk/FJCore/Resize/ImageResizer.cs

和FilterNNResize - 你可以看到的圖像數據的存儲方式 - 它的像素只是簡單的數組。

重要的部分是:

for (int y = 0; y < _newHeight; y++) 
    { 
     i_sY = (int)sY; sX = 0; 

     UpdateProgress((double)y/_newHeight); 

     for (int x = 0; x < _newWidth; x++) 
     { 
      i_sX = (int)sX; 

      _destinationData[0][x, y] = _sourceData[0][i_sX, i_sY]; 

      if (_color) { 

       _destinationData[1][x, y] = _sourceData[1][i_sX, i_sY]; 
       _destinationData[2][x, y] = _sourceData[2][i_sX, i_sY]; 
      } 

      sX += xStep; 
     } 
     sY += yStep; 
    } 

顯示了該數據被存儲在彩色平面的陣列,並且每個元件(8bpp的灰色,用於彩色3個元素1個元件)具有2-d陣列字節(x,y)爲圖像。

您只需循環目標像素,然後從源中相應位置複製。

編輯:別忘了給fjcore的作者提供補丁