2008-08-31 10 views
5

क्या कोई छवि को फसल करने के बारे में सलाह दे सकता है, चलिए किसी भी .NET फ्रेमवर्क संरचनाओं का उपयोग किए बिना जेपीजी कहें, केवल कच्चे बाइट्स? चूंकि यह सिल्वरलाइट में एकमात्र * तरीका है ...छवि क्रॉपिंग सी # बिना .net लाइब्रेरी

या लाइब्रेरी को इंगित करें?

मैं प्रतिपादन से चिंतित नहीं हूं कि मैं अपलोड करने से पहले एक jpg में हेरफेर करना चाहता हूं।

* सिल्वरलाइट में उपलब्ध कोई भी जीडीआई + (सिस्टम ड्रॉइंग) या डब्ल्यूपीएफ (System.Windows.Media.Imaging) लाइब्रेरी नहीं है।

Lockbits की आवश्यकता है GDI +, सवाल

स्पष्ट किया fjcore का उपयोग करना:। आकार बदलने के लिए http://code.google.com/p/fjcore/ लेकिन काटने के लिए कोई रास्ता नहीं है :(

उत्तर

2

ImageMagick एक बहुत अच्छा काम करता है आप के लिए संपादन कार्य सौंपने बंद के साथ ठीक कर रहे हैं अपने सर्वर ...

(गंभीरता से? कच्चे बाइट्स के साथ काम करने के लिए है सिल्वरलाइट में छवियों से छेड़छाड़ की सिफारिश की तरीका है? यही कारण है कि ... अविश्वसनीय रूप से लंगड़ा है।)

0

चांदी की रोशनी कहाँ है? क्लाइंट को फसल बनाने के लिए क्लाइंट को पूरी तस्वीर भेजने के लिए कोई कारण नहीं है? सर्वर पर है ... (यदि आप एक छवि संपादक है कि रचना नहीं करते हैं ..)

3

आप आसानी से fjcore में फसल लिख सकते हैं। Resizer

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

आपको पता चलता है कि डेटा रंग विमानों की एक सरणी में संग्रहीत है और प्रत्येक तत्व (1 8bpp ग्रे, रंग के लिए 3 तत्वों के लिए तत्व) 2-डी सरणी छवि के लिए बाइट्स (एक्स, वाई) के।

आपको केवल गंतव्य पिक्सेल के माध्यम से लूप करने की आवश्यकता है, फिर स्रोत में उचित स्थान से कॉपी करना।

संपादित करें: fjcore

के लेखक को पैच प्रदान करना न भूलें
संबंधित मुद्दे