2008-08-31 3 views
5

이미지 자르기 방법에 대해 조언 해 줄 수있는 사람이 있습니까? .NET 프레임 워크 구조를 사용하지 않고 jpeg라고 가정합니다. Silverlight에서 유일한 방법이기 때문에 ...이미지 자르기 .NET Framework없이 C#

또는 라이브러리를 가리키고 있습니까?

저는 업로드 전에 jpg를 조작하고 싶지 않습니다.

* Silverlight에서 사용할 수있는 GDI + (System.Drawing) 또는 WPF (System.Windows.Media.Imaging) 라이브러리가 없습니다.

Lockbits

은 GDI +를 필요로 fjcore 사용하여 질문

을 명확히 :. 크기를 조정 http://code.google.com/p/fjcore/을하지만 방법은자를 없습니다 :(

답변

2

ImageMagick이 꽤 좋은 일을 당신에게 나눠 편집 작업과 확인을 경우 당신의 서버 ...

(진심? 실버 라이트에서 이미지를 조작 권장되는 방법은 원시 바이트와 함께 작업하는 것입니다? 그건 ... 믿을 수 없을만큼 구식.)

0

실버 라이트는 어디에서 실행됩니까? 클라이언트에게 전체 그림을 보내어 클라이언트가 자르기 할 이유가 있습니까? 서버에서 처리 ... (이미지 편집기를 만들지 않은 경우)

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 작성자에게 패치를 제공하는 것을 잊지 마십시오.