5

.NETフレームワークの構成要素を使用せずに、生のバイトだけを使用して、たとえばjpegなどの画像をトリミングする方法について誰かアドバイスできますか? Silverlight ではこれが唯一の*方法なので...

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

アップロードする前にjpgを操作したいレンダリングには関係ありません。

*Silverlight で使用できる GDI+(System.Drawing) または WPF(System.Windows.Media.Imaging) ライブラリはありません。

Lockbits には GDI+ が必要、明確な質問

fjcore: http://code.google.com/p/fjcore/を使用してサイズを変更しますが、トリミングする方法はありません:(

4

4 に答える 4

3

fjcoreで自分でcropを簡単に書くことができます。Resizerのコードから始めます

http://web.archive.org/web/20140304090029/http://code.google.com:80/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グレーの場合は1要素、カラーの場合は3要素)に格納され、各要素には画像のバイト(x、y)の2次元配列があることを示しています。

宛先ピクセルをループして、ソースの適切な場所からコピーする必要があります。

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

于 2008-09-18T22:31:43.063 に答える
2

http://code.google.com/p/fjcore/source/checkout依存 関係のない画像処理ライブラリ。

于 2008-09-02T21:28:32.930 に答える
2

ImageMagickはかなり良い仕事をします。編集タスクをサーバーに引き継ぐことに問題がなければ...

(真剣に?Silverlight で画像を操作する推奨される方法は、raw バイトを使用することですか?それは...信じられないほど不自由です。)

于 2008-08-31T19:44:03.477 に答える
0

Silverlight はどこで実行されますか? クライアントに完全な画像を送信してクライアントにトリミングさせる理由はありますか? サーバー上で実行してください...(画像エディターを作成していない場合..)

于 2008-08-31T20:21:58.597 に答える