Обрезка изображения C # без библиотеки .net

Может ли кто-нибудь посоветовать, как обрезать изображение, скажем, jpeg, без использования каких-либо конструкций .NET framework, только необработанные байты? Поскольку это единственный * способ в Silverlight ...

Или указать на библиотеку?

Меня не волнует рендеринг, я хочу манипулировать jpg перед загрузкой.

* В Silverlight нет библиотек GDI + (System.Drawing) или WPF (System.Windows.Media.Imaging).

Lockbits требует GDI +, уточненный вопрос

Использование fjcore: http://code.google.com/p/fjcore/ для изменения размера но нет возможности обрезать :(


person Community    schedule 31.08.2008    source источник


Ответы (4)


Вы могли бы легко написать кадрирование самостоятельно в 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) для изображения.

Вам просто нужно перебрать целевые пиксели, копируя их из соответствующего места в источнике.

edit: не забудьте предоставить патч автору fjcore

person Lou Franco    schedule 18.09.2008

ImageMagick неплохо справляется. Если вы согласны с передачей задач редактирования на ваш сервер ...

(Серьезно? Рекомендуемый способ управления изображениями в Silverlight - работать с необработанными байтами? Это ... невероятно неудачно.)

person Shog9    schedule 31.08.2008

Я смотрю: http://code.google.com/p/fjcore/source/checkout Бесплатная библиотека для обработки изображений.

person Brian Leahy    schedule 02.09.2008

где выполняется silverlight? Есть ли вообще какая-то причина отправлять клиенту полное изображение, чтобы он обрезал его? Сделайте это на сервере ... (если вы не создаете редактор изображений, который есть ..)

person neslekkiM    schedule 31.08.2008