谁能在不使用任何.NET框架构造而仅使用原始字节的情况下,就如何裁剪图像(例如jpeg)提出建议?由于这是Silverlight中的唯一*方式...
还是指向图书馆?
我不关心渲染,我想在上传之前操纵jpg。
* Silverlight中没有可用的GDI +(System.Drawing)或WPF(System.Windows.Media.Imaging)库。
锁定位需要GDI +,已澄清问题
使用fjcore:http://code.google.com/p/fjcore/调整大小,但无法裁剪:(
最佳答案
您可以在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个元素用于颜色),每个元素都有一个图像的二维字节数组(x,y)。
您只需要遍历目标像素,然后从源中的适当位置进行复制。
编辑:别忘了向fjcore的作者提供补丁
关于c# - 没有.net库的图像裁剪C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37048/