PDA

View Full Version : سوال: تشخیص فرمت و اندازه تصویر و بازسازی آن



دلتنگ اسمان
پنج شنبه 13 دی 1397, 19:24 عصر
اساتید عزیز سلام
تصویری داریم که ابعاد و فرمت آن مشخص نیست.و تصویر با نرم افزارهای معمولی نمایش داده نمیشود.
آیا میشه طبق کد زیر وقتی به ارایه ای از بایتها تبدیل میکنیم بتونیم ابعاد و فرمت آن تصویر رو بدست بیاریم؟
یعنی در داخل این آرایه ابعاد و فرمت تصویر هم وجود داره؟ یا به عبارتی شماره ارایه خاصی برای چنین مواردی وجود داره؟
و آیا میشه این ارایه را به یک تصویر تبدیل کنیم؟
راستش من نتونستم و خطا داد.

تبدیل به ارایه ای از بایتها :

byte[] buff = System.IO.File.ReadAllBytes(op.FileName);



سعی در ساخت تصویر. البته در کد زیر ما خودمان ابعاد تصویر رو مشخص میکنیم!:

public Bitmap CopyDataToBitmap(byte[] data)
{
//Here create the Bitmap to the know height, width and format
Bitmap bmp = new Bitmap(352, 288, PixelFormat.Format24bppRgb);

//Create a BitmapData and Lock all pixels to be written
BitmapData bmpData = bmp.LockBits(
new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.WriteOnly, bmp.PixelFormat);

//Copy the data from the byte array into BitmapData.Scan0
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);


//Unlock the pixels
bmp.UnlockBits(bmpData);


//Return the bitmap
return bmp;
}
با تشکر

alexmcse
دوشنبه 24 دی 1397, 08:36 صبح
private void button1_Click(object sender, EventArgs e) {
// فایل مورد نظر
var fileInfo = new FileInfo("E:\\photo_2018-12-28_21-25-28.jpg") ;

Image ima = new Bitmap(fileInfo.FullName);


ima.RotateFlip( RotateFlipType.Rotate90FlipX);


ima.Save(fileInfo.FullName );

pictureBox1.Image = ima;
// سایز عکس
MessageBox.Show(ima.Size.Width + @"," + ima.Size.Height);
//فرمت عکس
MessageBox.Show(fileInfo.Extension);


}

دلتنگ اسمان
سه شنبه 25 دی 1397, 08:18 صبح
private void button1_Click(object sender, EventArgs e) {
// فایل مورد نظر
var fileInfo = new FileInfo("E:\\photo_2018-12-28_21-25-28.jpg") ;

Image ima = new Bitmap(fileInfo.FullName);


ima.RotateFlip( RotateFlipType.Rotate90FlipX);


ima.Save(fileInfo.FullName );

pictureBox1.Image = ima;
// سایز عکس
MessageBox.Show(ima.Size.Width + @"," + ima.Size.Height);
//فرمت عکس
MessageBox.Show(fileInfo.Extension);


}

دوست عزیز ممنون از توجهتون
همانطور که گفتم این تصاویر با نرم افزارهای معمولی باز نمیشن(چون اسیب دیدن . علتش معلوم نیست احتمال داره باج افزار این کار را کرده باشه فرمت همه تصاویر به .zdkkm تغییر کرده) به خاطر همین به Image تبدیل نمیشه و در خط دوم خطا میده :(فرمت jpg رو هم خودم برای تصویر گذاشتم یعنی برنامه با هر فرمتی که بخونه این خطا رو میده)
149617

د

Mahmoud.Afrad
سه شنبه 25 دی 1397, 09:17 صبح
با استفاده از هدر فایل میتونید نوع فایل را تشخیص بدید.
https://en.wikipedia.org/wiki/List_of_file_signatures
https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files



اگر فایلها توسط باج افزار رمزگذاری شده باشند برای رمزگشایی نیاز به کلید و الگوریتم دارید.