PDA

View Full Version : سوال: چه طور میتونم از کامپیتور عکس بگیرم؟؟؟؟؟



mohammad_71
یک شنبه 16 مهر 1391, 22:14 عصر
با سلام

دوستان من یه کدی میخوام که هر ده دقیقه یه بار اتوماتیک از صفحه نمایش کامپیوترم عکس بگیره و فایل رو تو درایو c ذخیره کنه.

ممنون میشم کدشو بزارین برام.

morteza271
یک شنبه 16 مهر 1391, 23:29 عصر
این یه نمونه کد هست که از صفحه مانیتور عکس می گیره.
مطابق با نیازهای خودتون تغییرش بدین و استفاده کنید :
Rectangle bounds = Screen.GetBounds(Point.Empty);
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
}
bitmap.Save("D:\\test.jpg", ImageFormat.Jpeg);
}

mohammad_71
دوشنبه 17 مهر 1391, 02:52 صبح
ممنون دوسته عزیز بابته جوابه خوبی که دادین.ولی اگر بخوام عکس ها رو هم دیگه ذخیره نشه باید به کد چی اضافه کنم؟مثلا میخوام به صورت 1 2 3 4 5 .... همین طوری به ترتیب ذخیره بشن کناره هم.

ممنون میشم بازم جوابمو بدین.

حسین شهریاری
دوشنبه 17 مهر 1391, 07:10 صبح
میتونید نام تصویر را از یه شمارنده بگیرید و هر بار شمارنده را افزایش بدید:


int Cnt=1;
Save("D:\\"+Cnt.ToString()+".jpg", ImageFormat.Jpeg);
Cnt++;

البته Cnt را باید سراسری تعریف کنید که هر بار مقدارش 1 نشه!

موق باشید

morteza271
دوشنبه 17 مهر 1391, 08:43 صبح
روشی که دوستمون گفتن خوبه ولی هر دفعه که برنامه اجرا بشه دوباره مقدارش 1 میشه و دوباره عکس ها روی هم ذخیره میشن.برای این کار بهتره از کد زیر استفاده کنید :
مثلا فرض کنید شما میخواین تصاویر رو در یک پوشه در درایو D به نام Images ذخیره کنید (Path = D:\Images)
کد :
int i = 1;
string Path = @"D:\Images";
string TempPath = Path + @"\" + i.ToString() + ".jpg";
while (System.IO.File.Exists(TempPath))
{
i++;
TempPath = Path + @"\" + i.ToString() + ".jpg";
}
Rectangle bounds = Screen.GetBounds(Point.Empty);
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
}
bitmap.Save(TempPath, ImageFormat.Jpeg);
}

mohammad_71
دوشنبه 17 مهر 1391, 18:47 عصر
دوسته عزیز واقعا ممنون.همونی هست که میخواستم.تشکر

فقط یه چیز دیگه اگر بخوام مثلا این عکس ها رو همشو تو یه فایل zip یا rar ذخیره کنه و در صورت ممکن یه پسوردم بزاره روش که کسی نتونه بازشون کنه.باید چیکار کنم؟

میشه این کارو کرد؟

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

morteza271
دوشنبه 17 مهر 1391, 19:38 عصر
برای اینکه تمام عکس ها رو zip کنید باید مثلا زمانی که برنامتون بسته میشه این کار رو بکنید (البته چون شما گفته بودین که میخواین هر چند وقت یه بار یه عکس بگیره) پس باید در انتها تصاویر رو zip کنید.
برای اینکار میتونید از dllهای آماده استفاده کنید.
من یه نمونه که خودم ازش استفاده میکنم رو واستون میذارم ببینید بدردتون میخوره :

اول فایل dll رو به رفرنس هاتون اضافه کنید و بعد با استفاده از نمونه کد زیر میتونید ازش استفاده کنید :
این نمونه کد :
string[] strFiles = System.IO.Directory.GetFiles(@"D:\Images");
string strPath = @"D:\Images\Archive.zip";
zipper.compression.Zip.Compress(strFiles, strPath);

و اینم خود فایل dll :
93728

موفق باشید