السلام عليكم
هل يمكن تحويل صورة (Bitmap) الى (Jpg) دون اتلتغيير على دقة الصورة؟؟
بحيث اذا تم التحويل بالعكس تعطي نفس الصورة السابقة دون اي تغيير؟
كما نعلم ان (Jpg) يمكن تحديد دقة الضغط؟؟؟؟
السلام عليكم
هل يمكن تحويل صورة (Bitmap) الى (Jpg) دون اتلتغيير على دقة الصورة؟؟
بحيث اذا تم التحويل بالعكس تعطي نفس الصورة السابقة دون اي تغيير؟
كما نعلم ان (Jpg) يمكن تحديد دقة الضغط؟؟؟؟
عندما تولد يا ابن آدم يؤذن في اذنك من غير صلاة...
وعندما تموت.... يصلى عليك من غير آذان....
فكأن حياتك في الدنيا ليست سوى... الوقت الذي تمضيه بين الأذان والصلاة...
فلا تقضيه بما لاينفع
Mohammad Lahlouh
خواريزمية ضغط JPEG لا تسمح بذلك
يمكنك إستخدام إمتداد أخر مثل PNG
أو GIF إذا كان عدد الألوان 256 أو أقل
بسم الله الرحمن الرحيم
طريق التحيول من صيغة الـ BMP إلى JPEG هي :
هذه الوظيفة مهمتها إرجاع المحول المطلوب في مثالينا هذا نمرر "image/jpeg" ليعيد لنا المحول الخاص بالـ JPEG
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for ( j = 0; j < encoders.Length; ++j )
{
if ( encoders[j].MimeType == mimeType )
return encoders[j];
}
return null;
} public Image GetJPEG(Image img)
{
if ( img == null ) return null;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myImageCodecInfo = GetEncoderInfo("image/jpeg");
myEncoder = Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
// تستطيع أن تضع النسبة التي تريدها كلما قمت بتكبير النسبة خفت عملية فقدان الصورة لرونقها الأصلي
myEncoderParameter = new EncoderParameter(myEncoder, 50 /* 50% Image Quality*/);
myEncoderParameters.Param[0] = myEncoderParameter;
Guid FileNameGuid = Guid.NewGuid();
string FileName = System.Windows.Forms.Application.StartupPath + "\\" + FileNameGuid.ToString() + ".JPG";
img.Save(FileName, myImageCodecInfo, myEncoderParameters);
System.IO.FileStream stream = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
Image Jepg = Image.FromFile(FileName);
System.IO.File.Delete(FileName);
return Jepg;
}لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
السلام عليكم
شكرا على الرد
ولكن هناك رسالة خطأ Invalide parameter used
هل ممكن ان ترسلي project ؟
وشكرا لك.
عندما تولد يا ابن آدم يؤذن في اذنك من غير صلاة...
وعندما تموت.... يصلى عليك من غير آذان....
فكأن حياتك في الدنيا ليست سوى... الوقت الذي تمضيه بين الأذان والصلاة...
فلا تقضيه بما لاينفع
Mohammad Lahlouh
بسم الله الرحمن الرحيم
إن شاء الله شغالة 100% جرب
public Image GetJPEG(Image img)
{
if (img == null) return null;
ImageCodecInfo myImageCodecInfo;
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myImageCodecInfo = GetEncoderInfo("image/jpeg");
myEncoder = Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
// تستطيع أن تضع النسبة التي تريدها كلما قمت بتكبير النسبة خفت عملية فقدان الصورة لرونقها الأصلي
myEncoderParameter = new EncoderParameter(myEncoder, 50L /* 50% Image Quality*/);
myEncoderParameters.Param[0] = myEncoderParameter;
Guid FileNameGuid = Guid.NewGuid();
string FileName = System.Windows.Forms.Application.StartupPath + "\\" + FileNameGuid.ToString() + ".JPG";
//string FileName = @"C:\111.JPG";
img.Save(FileName, myImageCodecInfo, myEncoderParameters);
Image Jepg = Image.FromFile(FileName);
System.IO.File.Delete(FileName);
return Jepg;
}
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
private void button1_Click(object sender, EventArgs e)
{
Image BMB = Image.FromFile(@"D:\Documents and Settings\Jenin\My Documents\My Pictures\ERdiagram.bmp");
Image JPEG = GetJPEG(BMB);
}الخطأ كان كون الوظيفة تأخذ من متحول أي Overloading بيجب أن تحدد نوع البرمتير لإستدعاء الوظيفة الخاصة
تم تعديل هذه المشاركة بواسطة TarekNajem04 في 3 ديسمبر 2005 في 22:13
لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
شكرا لك جاري التجربة...
عندما تولد يا ابن آدم يؤذن في اذنك من غير صلاة...
وعندما تموت.... يصلى عليك من غير آذان....
فكأن حياتك في الدنيا ليست سوى... الوقت الذي تمضيه بين الأذان والصلاة...
فلا تقضيه بما لاينفع
Mohammad Lahlouh
هذا الموضوع مغلق.