2008-08-31 82 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的作者提供补丁