2008-08-31 40 views
5

¿Alguien puede aconsejar sobre cómo recortar una imagen, digamos jpeg, sin usar ninguna construcción de .NET framework, solo bytes crudos? Dado que esta es la única * forma en Silverlight ...Recorte de imagen C# sin la biblioteca .net

¿O apunta a una biblioteca?

No me interesa renderizar, quiero manipular un jpg antes de subirlo.

* No hay bibliotecas GDI + (System.Drawing) o WPF (System.Windows.Media.Imaging) disponibles en Silverlight.

LockBits requiere GDI +, aclarado pregunta

Usando fjcore:. http://code.google.com/p/fjcore/ para cambiar el tamaño, pero no hay manera de recortar :(

Respuesta

2

ImageMagick hace un muy buen trabajo Si estás bien con dar el relevo a su tareas de edición servidor ...

(en serio? La forma recomendada de manipulación de imágenes en Silverlight es trabajar con bytes prima? ... Eso es muy cojo.)

0

¿Dónde se ejecuta Silverlight? ¿Hay alguna razón para enviar una imagen completa al cliente para que el cliente la recorte? hacerlo en el servidor ... (si no está creando un editor de imágenes que es ..)

3

Puede escribir fácilmente recortar usted mismo en fjcore. Comenzar con el código para Resizer

http://code.google.com/p/fjcore/source/browse/trunk/FJCore/Resize/ImageResizer.cs

y FilterNNResize - se puede ver cómo se almacenan los datos de la imagen - es sólo matrices simples de píxeles.

La parte importante es:

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; 
    } 

le muestra que los datos se almacenan en una matriz de planos de color (1 elemento para el gris 8bpp, 3 elementos para color) y cada elemento tiene una matriz 2-D de bytes (x, y) para la imagen.

Solo tiene que recorrer los píxeles de destino, y luego copiarlos desde el lugar apropiado en la fuente.

editar: no olvides proporcionar el parche al autor de fjcore

Cuestiones relacionadas