2008-08-31 37 views
5

Herhangi bir .NET çerçeve yapısı kullanmadan, bir jpeg diyelim ki bir resmi nasıl kırpacağınız konusunda tavsiyede bulunabilir, sadece ham bayt? Bu, Silverlight'taki tek * yol olduğundan ...Resim kırpmadan C# .net kitaplığı olmadan

Veya kütüphaneye işaret mi?

Oluşturmayla ilgilenmiyorum Yüklemeden önce jpg'yi değiştirmek istiyorum.

* Silverlight'ta GDI + (System.Drawing) veya WPF (System.Windows.Media.Imaging) kitaplıkları bulunmamaktadır.

LockBits

GDI + gerektiriyor, fjcore kullanarak soruyu

açıklık:. Boyutlandırmak için http://code.google.com/p/fjcore/ ancak hiçbir şekilde kırpmak için :(

cevap

2

ImageMagick çok iyi bir iş yapar size teslim kapalı düzenleme görevlerle Tamam iseniz sizin sunucu ...

(Ciddi? Silverlight görüntüleri manipüle önerilen yolu ham bayt çalışmak olduğunu? Bu ... inanılmaz topal oluyor.)

0

Silverlight nerede yürütülür? İstemciyi kırpmak için müşteriye tam bir resim göndermek için herhangi bir sebep var mı? (Eğer bir resim düzenleyici oluştururken değilse ..) ... sunucuda Do it Ben bir göz alıyorum

3

Ürünü kolayca fjcore içine yazabilirsiniz. Resizer

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

ve FilterNNResize için kodu ile başlayın - Eğer görüntü verilerin saklandığı nasıl görebilirsiniz - bu piksel sadece basit diziler var.

önemli bir parçasıdır:

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

verileri ve her bir elemanın (8bpp gri renk 3 elemanları 1 eleman) bir 2-D dizi vardır renk düzlemlerinin bir dizi içinde depolanan gösterir Resim için bayt (x, y).

Sadece hedef piksellerden geçerek, kaynaktaki uygun yerden kopyalamanız yeterlidir.

düzenleme: fjcore yazarına yamayı bildirmeyi unutmayın.