PDA

View Full Version : ارسال عکس مانیتور کلاینت در شبکه



m_amin_t
یک شنبه 14 فروردین 1390, 10:03 صبح
سلام
من یه برنامه ی سرور و کلاینتی دارم که میخوام در یک پریود زمانی مشخص، از دسکتاپ کلاینت عکس بگیرم و برای سرور ارسال کنم. اگه بخوام هر دفعه از صفحه ی دسکتاپ عکس بگیرم و اون عکس رو در شبکه بفرستم هم کار پرهزینه ای هستش و هم ترافیک شبکه بالا میره. یه راهش هم اینه که فقط تغییرات تصویر دسکتاپ برای سرور ارسال بشه.
حالا سوال من اینه که چجوری؟!

amirsadeghi
یک شنبه 14 فروردین 1390, 10:07 صبح
منظورت از تغییرات اینه که هر نرم افزاری باز شد و ... یا اینکه اگه عکس دستکتاپ عوض شد یا آیکون ها جابجا شدن؟

m_amin_t
یک شنبه 14 فروردین 1390, 10:27 صبح
منظورت از تغییرات اینه که هر نرم افزاری باز شد و ... یا اینکه اگه عکس دستکتاپ عوض شد یا آیکون ها جابجا شدن؟
منظورم تغییرات در عکس دسکتاپ هستش.

amirsadeghi
یک شنبه 14 فروردین 1390, 13:39 عصر
من قبلا برای اینکار با یک api مواجه شده بودم
فکر میکنم getsysteminfo بود
این کد برای تغییر پس زمینه استفاده میشه. شاید برای استفاده از اون تابع به دردت بخوره
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Sub Form_Load()
Dim FilePath As String
FilePath = "C:\TestImage.bmp"
SystemParametersInfo ByVal 20, vbNoString, ByVal FilePath, &H1
End Sub

میتونی با این api بفهمی چه عکسی زمینه هست. بعد هر چند وقت یه بار چک کنی که هنوز همونه یا عوض شده
اگه عوض شده بود عکس بگیری و بفرستی

m_amin_t
دوشنبه 15 فروردین 1390, 15:31 عصر
من میخوام دوتا عکس رو با هم مقایسه کنم و درصورت اختلاف، پیکسل های اختلافی رو دربیارم و ارسال کنم. تابع GetPixel توی این موارد قابل استفاده س ولی خیلی زمان بره. میخوام ببینم تابع سزیع تر یا راه سریع تری وجود داره؟

amirsadeghi
دوشنبه 15 فروردین 1390, 16:56 عصر
خب پس کلا می خوای بزنی تو بحث پردازش تصویر!
برای مقایسه تصاویر با هم میتونی از تفریق پیکسلی استفاده کنی
اول هر کدوم از پیکسل ها رو تبدیل به کد رنگی کن و تو آرایه ذخیره کن
بعد از هم کمشون کن
بعد دوباره تبدیلش کن به عکس و نشونش بده
خواهی دید که پیکسلهایی که با هم فرق دارن کاملا مشخص شدن!

m_amin_t
سه شنبه 16 فروردین 1390, 09:58 صبح
خوب این درست، ولی مشکل اینجاست که با چی پیکسل ها رو بگیرم؟؟! یه راهش تابع GetPixel هستش که اونو امتحان کردم و مشکلش زمان بر بودنشه. دنبال یه راه سرعتر هستم و بهینه !

amirsadeghi
سه شنبه 16 فروردین 1390, 10:14 صبح
خب میتونی از بیتمپ استفاده کنی
تقریبا سرعت قابل قبولی میتونه بهت بده
ولی تو این ابعاد عکس حتما باید از thread هم استفاده کنی...

raminsoft
سه شنبه 16 فروردین 1390, 11:08 صبح
بنظرم اگر دوتا تصویر داری که بصورت فایل ذخیره شده و میخوای ببینی فقط تغییر کرده یا نه با CRC چک کن ، اگر تغییر نکرده بود که هیچ ، اگر تغییر کرده بود بعدش با توابع بیا اختلاف رو در بیار