2008-08-31 12 views
5

画像をトリミングする方法についてアドバイスをいただけますか。これはSilverlightの唯一の方法なので...Image cropping C#.netライブラリなし

ライブラリを指さしたままにしますか?

私はアップロードする前にjpgを操作したいと思っています。

* Silverlightで利用できるGDI +(System.Drawing)またはWPF(System.Windows.Media.Imaging)ライブラリはありません。サイズを変更するhttp://code.google.com/p/fjcore/が、トリミングする:(

答えて

2

ImageMagickを手立てはかなり良い仕事をしていない、あなたに編集作業をハンドオフでOKなら:。

するLockBitsはfjcoreを使用して、質問

を明らかにし、GDI +が必要ですサーバー...

(マジ?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次元配列を有する色平面のアレイに記憶されていることを示しています画像のバイト数(x、y)

宛先ピクセルをループして、ソースの適切な場所からコピーしてください。

編集:fjcoreの著者にパッチを提供するのを忘れないでください。