Обрезка изображения C # без библиотеки .net - PullRequest
5 голосов
/ 31 августа 2008

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

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

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

* В Silverlight нет доступных библиотек GDI + (System.Drawing) или WPF (System.Windows.Media.Imaging).

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

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

Ответы [ 4 ]

3 голосов
/ 19 сентября 2008

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

2 голосов
/ 03 сентября 2008

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

2 голосов
/ 31 августа 2008

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

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

0 голосов
/ 01 сентября 2008

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

...