图像裁剪C#没有.net库

时间:2008-08-31 19:35:32

标签: c# silverlight image-manipulation

任何人都可以建议如何裁剪图像,让我们说jpeg,而不使用任何.NET框架结构,只是原始字节?因为这是Silverlight中唯一的*方式......

还是指向图书馆?

我并不关心渲染我想在上传之前操纵jpg。

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

Lockbits需要GDI +,澄清问题

使用fjcore:http://code.google.com/p/fjcore/调整大小但无法裁剪:(

4 个答案:

答案 0 :(得分:3)

你可以轻松地在fjcore中自己写作。从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;
}

显示数据存储在一个颜色平面数组中(1个元素用于8bpp灰色,3个元素用于颜色),每个元素都有一个2-D字节数组(x,y)用于图像。

您只需要遍历目标像素,然后从源中的适当位置进行复制。

编辑:不要忘记向fjcore

的作者提供补丁

答案 1 :(得分:2)

ImageMagick做得很好。如果您可以将编辑任务交给服务器......

(说真的?在Silverlight中操作图像的推荐方法是使用原始字节?这是......令人难以置信的蹩脚。)

答案 2 :(得分:2)

我正在看一看:http://code.google.com/p/fjcore/source/checkout 一个无依赖图像处理库。

答案 3 :(得分:0)

执行silverlight的地方? 是否有任何理由向客户发送完整的图片以使客户端裁剪它? 在服务器上执行...(如果您没有创建图像编辑器,那么......)