2016-09-13 10 views
7

में IntPtr सीधे बचाने मैं स्कैनर से छवि फ़ाइल हो और स्थानीय डिस्क पर सहेजने के लिए इस कोड है। enter image description hereGDip छवि अपने स्थानीय ड्राइव

मैं इस संवाद को त्यागना चाहता हूं और सीधे अपने ड्राइव में फ़ाइल को सहेजना चाहता हूं।

**Updated:** 



    public static bool SaveDIBAs(string picname, IntPtr bminfo, IntPtr pixdat) 
     { 
      SaveFileDialog sd = new SaveFileDialog(); 

      sd.FileName = picname; 
      sd.Title = "Save bitmap as..."; 
      sd.Filter = 
       "Bitmap file (*.bmp)|*.bmp|TIFF file (*.tif)|*.tif|JPEG file (*.jpg)|*.jpg|PNG file (*.png)|*.png|GIF file (*.gif)|*.gif|All files (*.*)|*.*"; 
      sd.FilterIndex = 1; 

      return true; 
     } 
     for (int i = 0; i < pics.Count; i++) 
          { 
           IntPtr img = (IntPtr)pics[i]; 


           SetStyle(ControlStyles.DoubleBuffer, false); 
           SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
           SetStyle(ControlStyles.Opaque, true); 
           SetStyle(ControlStyles.ResizeRedraw, true); 
           SetStyle(ControlStyles.UserPaint, true); 

           bmprect = new Rectangle(0, 0, 0, 0); 

           bmpptr = GlobalLock(img); 
           pixptr = GetPixelInfo(bmpptr); 

           SaveDIBAs(@"C:\a.jpg", bmpptr, pixptr); 
    } 
+0

यह ठीक एक बार आप अपने लाइन 'Gdip.SaveDIBAs बदल (@" C: \ ", bmpptr, pixptr) होना चाहिए, (' Gdip.SaveDIBAs को '@" C: \ a.jpg ", bmpptr , pixptr); ' –

+0

@KeyurPATEL मैं बदल गया .jpg लेकिन यह काम नहीं किया –

+0

यह जांचें: [सी # संवाद का उपयोग किए बिना छवि सहेजें] (http://stackoverflow.com/questions/15886617/c-sharp- बचाओ -image-बिना-का उपयोग कर-संवाद)। यह पूरी तरह से प्रासंगिक नहीं है, लेकिन यह दिखाता है कि संवाद के बिना बचत की जा सकती है, अगर आप सब कुछ सही तरीके से निर्दिष्ट करते हैं। 'FileInfo fi = new FileInfo (filePath) का उपयोग करने का प्रयास करें;' जैसा कि लिंक में दिए गए उत्तर से पता चलता है, फिर 'Gdip.SaveDIBAs (@ "C: \" + fi.Name, bmpptr, pixptr); ' –

उत्तर

0

मुझे लगता है कि आप बस के बजाय सीधे gdip.dll के कार्यों को बुलाने की Image और Bitmap प्रकार में बनाया का उपयोग करना चाहिए।

IntPtr img = (IntPtr)pics[i]; 
using (Bitmap bmp = Image.FromHBitmap(img)) 
{ 
    bmp.Save(@"C:\a.jpg", ImageFormat.Jpeg); 
} 
+0

अपने कोड –

+0

में FromHBitmap को हल नहीं कर सकता और यदि आप 'सिस्टम का उपयोग कर' जोड़ रहे हैं; '? – taffer

+0

हाँ मैं संदर्भ –

संबंधित मुद्दे