منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مشكلة في حفظ الصورة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : مشكلة في حفظ الصورة (/showthread.php?tid=21831)



مشكلة في حفظ الصورة - Fantastico - 22-09-17

السلام عليكم
واجهتني مشكلة بسيطة وليست لدي فكرة عن كيفية حلها
وهي عندما اخزن صورة في الميموري ستريم على هيئة Jpeg ثم استخرجها لا استطيع خزنها مجددا بنفس الطريقة
حيث يحدث خطأ غير معروف [حدث خطأ عام في GDI+]

قمت بتحميل صورة من الجهاز بأي امتداد بواسطة الدالة Image.FromFile
ثم أحفظها في الستريم Image.Save(MemoryStream, ImageFormat.Jpeg) l
واستخرج الصورة من الستريم Image.FromStream
الان عندما احاول حفظ الصورة مجددا في الستريم بنفس الطريقة يحدث الخطأ
علما أن الخطأ يحدث مع أي نوع من الصور Jpeg و Png

هل واجه أحد مثل هذه المشكلة او يعرف وجهة الحل لابحث عنه بنفسي
PHP كود :
Try
 
                   Dim img As Image Image.FromFile("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"True)
 
                   Dim ms As New IO.MemoryStream

                    img
.Save(msImaging.ImageFormat.Jpeg)
 
                   Dim newImage As Image Image.FromStream(msTrue)
 
                   ms.Dispose()
 
                   ms = New IO.MemoryStream
                    newImage
.Save(msImaging.ImageFormat.Jpeg)
 
                   ms.Dispose()
 
               Catch ex As Exception
                    MsgBox
(ex.MessageMsgBoxStyle.Critical)
 
               End Try 



RE: مشكلة في حفظ الصورة - silverlight - 22-09-17

الأسرع و الأفضل لك أ ن تستخدم الدوال التالية

PHP كود :
   Public Shared Function ToBitmap(buffer() As Bytewidth As Integerheight As Integer) As Drawing.Bitmap
        Dim bmp 
As New System.Drawing.Bitmap(widthheight)
 
       Dim data As Imaging.BitmapData bmp.LockBits(New Rectangle(00bmp.Widthbmp.Height), Imaging.ImageLockMode.WriteOnlyImaging.PixelFormat.Format32bppArgb)
 
       Runtime.InteropServices.Marshal.Copy(buffer0data.Scan0buffer.Length)
 
       bmp.UnlockBits(data)
 
       Return bmp
    End 
Function

 
   Public Shared Function ToBytes(bmp As Bitmap) As Byte()
 
       Dim data As Imaging.BitmapData bmp.LockBits(New Rectangle(00bmp.Widthbmp.Height), Imaging.ImageLockMode.ReadOnlyImaging.PixelFormat.Format32bppArgb)
 
       Dim buffer As Byte() = New Byte(data.Stride data.Height 1) {}
 
       Runtime.InteropServices.Marshal.Copy(data.Scan0buffer0buffer.Length)
 
       bmp.UnlockBits(data)
 
       Return buffer
    End 
Function 



RE: مشكلة في حفظ الصورة - أبو نوره - 22-09-17

مرحبا اخى

سبب المشكله انك استخدمت ms.Dispose الاولى والتي اتلفت المتغير ms فلم يعد بامكانك استخدامه مره اخرى حتى لو عملت New لنفس الاسم


RE: مشكلة في حفظ الصورة - Fantastico - 22-09-17

(22-09-17, 02:23 AM)silverlight كتب : الأسرع و الأفضل لك أ ن تستخدم الدوال التالية

شكرا لك Smile
يبدو انني سأستخدم هذه الدوال كثيرا

(22-09-17, 02:52 AM)أبو نوره كتب : مرحبا اخى

سبب المشكله انك استخدمت ms.Dispose الاولى والتي اتلفت المتغير ms فلم يعد بامكانك استخدامه مره اخرى حتى لو عملت New لنفس الاسم

لا اعتقد ذلك يا صديقي
لان المتغير ms لا يتلف
الذي تلف هو الكائن Object المرتبط بالمتغير ms
وتم انشاء كائن جديد New بدلا منه ليرتبط بالمتغير ms


RE: مشكلة في حفظ الصورة - tomoq5 - 29-09-17

(22-09-17, 02:23 AM)silverlight كتب : الأسرع و الأفضل لك أ ن تستخدم الدوال التالية
وكيف يتم استدعاء هذين الدالتين وكيف

وبارك الله فيك


RE: مشكلة في حفظ الصورة - silverlight - 29-09-17

راجع الموضوع التالي : قد يفيدك

تحويل الصورة الي مصفوفة بايت و العكس