نمایش نتایج 1 تا 23 از 23

نام تاپیک: برداشتن pixel های یک عکس

  1. #1
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    برداشتن pixel های یک عکس

    با سلام
    دوستان چطوری می تونم پیکسل های موجود در یک عکس رو بردارم بریزم توی یک ظرفی ؟
    کسی شبه کدی داره؟ کدش چیه ؟ با تشکر

  2. #2
    کاربر دائمی آواتار aryasoft2872
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    بیرجند
    پست
    399

    نقل قول: برداشتن pixel های یک عکس

    تابع Getpixel

    Public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y
    As Long) As Long

  3. #3
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    نقل قول نوشته شده توسط aryasoft2872 مشاهده تاپیک
    تابع Getpixel

    Public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y
    As Long) As Long

    دوست من این کد رو کجا Paste کنم؟ توی صفحه کد Paste کردم قرمز شد چرا ؟
    میشه این تیکه سورس رو به صورت برنامه بگذاری که بدونم چطوری کار می کنه یا راهنماییم کنی ؟ با تشکر

  4. #4
    کاربر دائمی آواتار REZADG
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    هر جایی که انسان میتونه باشه
    پست
    472

    نقل قول: برداشتن pixel های یک عکس

    نقل قول نوشته شده توسط ehsanocx مشاهده تاپیک
    دوست من این کد رو کجا Paste کنم؟ توی صفحه کد Paste کردم قرمز شد چرا ؟
    میشه این تیکه سورس رو به صورت برنامه بگذاری که بدونم چطوری کار می کنه یا راهنماییم کنی ؟ با تشکر
    برای این که کر دو تیکه شدی این تیکه ی پایینی رو به آخر سطر اول ببر و یه فاصله بده و در ضمن در قسمت جنرال برنامه پیست کن

  5. #5
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    چطوری از این تابع استفاده کنم دوست من؟ مقدار RGB اون پیکسل رو چطوری نمایش بدم توی Text ?

  6. #6
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    Copile Error
    Constants, Fixed -length, arrays .user -defined types and declare statements not allowes as public members of object modules
    این Error رو میده برای چیه؟ میشه استفاده از این ماژول رو توی یه نمونه سورس توضیح بدین با تشکر

  7. #7
    کاربر دائمی آواتار aryasoft2872
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    بیرجند
    پست
    399

    نقل قول: برداشتن pixel های یک عکس

    برای رفع ارور بالا Public رو تبدیل به Private کنید این هم مثالی از کارکرد این API:
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    دوست من می خوام پیکسل های عکسی که درون یک Picture box دارم رو بدست بیارم چطوری می تونم چنین کاری کنم؟ کد RGB رو چطوری می تونم برای هر پیکسل بدست بیارم؟

  9. #9
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    دوست من من کد هر پیکسل رو بدست آوردم کد پیکسل عکسی که داخل pictuer box هست رو.

    حالا چطوری می تونم بوسیله دو تا حلقه for . همه ی پکسل های سطر و ستون رو بدست بیارم ؟

  10. #10
    کاربر دائمی آواتار aryasoft2872
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    بیرجند
    پست
    399

    نقل قول: برداشتن pixel های یک عکس

    خودتون جواب خودتون رو دادید،به کمک دو تا حلقه For...

  11. #11
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    دوست من
    من نمی دونم کجا باید این حلقه ها رو قرار بدم و به چه صورتی باید قرار بدم میشه کدم رو اصلاح کنید ؟ Code.zip

  12. #12
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    دوستان کسی کمک نمی تونه کنه؟

  13. #13
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: برداشتن pixel های یک عکس

    حلقه های For یک چیزی تو این مابه ها میشه:

    Dim i, j, x, y As Long
    Dim Row As String
    For i = 0 To picSource.Height
    For j = 0 To picSource.Width
    Row = Row & GetPixel(picSource.hDC, i, j) & " "
    Next j
    txtCodeBinery.Text = txtCodeBinery.Text & Row & vbCrLf
    Row = ""
    Next i


    فقط باید خروجی تابع GetPixel رو به معادل RGB تبدیل کنید بعد توی متغیر Row قرار بدید.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  14. #14
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    نقل قول نوشته شده توسط xxxxx_xxxxx مشاهده تاپیک
    حلقه های For یک چیزی تو این مابه ها میشه:

    Dim i, j, x, y As Long
    Dim Row As String
    For i = 0 To picSource.Height
    For j = 0 To picSource.Width
    Row = Row & GetPixel(picSource.hDC, i, j) & " "
    Next j
    txtCodeBinery.Text = txtCodeBinery.Text & Row & vbCrLf
    Row = ""
    Next i


    فقط باید خروجی تابع GetPixel رو به معادل RGB تبدیل کنید بعد توی متغیر Row قرار بدید.


    این کد ها رو توی یک دکمه می گذارم برنامه رو اجرا می کنم روی دکمه کلیک می کنم. برنامه هنگ می کنه؟

    من منظورتون رو از این جمله اتون نفهمیدم

    فقط باید خروجی تابع GetPixel رو به معادل RGB تبدیل کنید بعد توی متغیر Row قرار بدید

    ؟

  15. #15
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    Private Sub CmdShowConvertBinery_Click()
    Dim Red As Integer, Green As Integer, Blue As Integer
    Dim i, j, x, y, ColorValue As Long
    Dim Row As String
    For i = 0 To picSource.Height
    For j = 0 To picSource.Width
    ColorValue = GetPixel(picSource.hDC, x, y)

    'Extract red, green, blue color components.
    Call ExtractRGBFromColor(ColorValue, Red, Green, Blue)

    Row = Row & ColorValue

    Next j
    txtCodeBinery.Text = txtCodeBinery.Text & Row & vbCrLf
    Row = ""
    Next i

    End Sub


    همش اجرا می کنم تا دکمه رو می زنم هنگ می کنه؟

  16. #16
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: برداشتن pixel های یک عکس

    به این خاطر که حلقه ها طولانی هستند. شما به جای Height و Width مقادیر تقریبی کوچکتری قرار بدید و کمی صبور باشید.

    همچنین می تونید توی بدنه حلقه خارجی از DoEvents استفاده کنید.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  17. #17
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    اقا تا 100x100 پیکسل رو راحت نشون میده اما برای height و width عکس رو میدم به حلقه for . هنگ می کنه . چون خیلی فرایتد محاسبه اش زیاد میشه باید چیکار کنم که این فرایند رو کاهش بدیم؟ تا برنامه هنگ نکنه و بتونه نمام پیکسل ها و نمایش بده ؟

  18. #18
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: برداشتن pixel های یک عکس

    توی بدنه حلقه خارجی بنویسید DoEvents. جایی که متغیر Row داره خالی میشه.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  19. #19
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    ExtractRGBWithCopyMemory.zip

    آقا اینو نگاه کن. من نمی دونم این DoEvent رو کجا قرار بدم. یه نگاه به کد بنداز. ببین پیشرفتم خوب بوده ؟

  20. #20
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    chi. DoEvent
    DoEvent. مینویسم error میده ؟ قبلش نیاید متغییری بنویسم؟ مثلا Rom.DoEvent

  21. #21
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525
    Doevent رو هم میزارم کمی سرعت نمایش پیکسل ها بهتر میشه اما در کل بازم جواب کار رو نمیده. چرا باید از فایل kernel32 استفاده کنه؟ به نظر شما بخاطر اینکه مقدار RGB رو از این تابع فراخوانی میکنه اینقدر طول نمیکشه ؟ نمیشه اینو حذف کرد؟

    به جای textbox از richtextbox استفاده کنم بهتر نیست ؟ توی تکست باکس چقدر متن جا می گیره ؟
    آخرین ویرایش به وسیله xxxxx_xxxxx : شنبه 08 خرداد 1389 در 00:27 صبح دلیل: ادغام

  22. #22
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: برداشتن pixel های یک عکس

    در مورد DoEvents شما حرف s آخر رو جا انداخته بودید.
    نقل قول نوشته شده توسط ehsanocx مشاهده تاپیک
    چرا باید از فایل kernel32 استفاده کنه؟ به نظر شما بخاطر اینکه مقدار RGB رو از این تابع فراخوانی میکنه اینقدر طول نمیکشه ؟ نمیشه اینو حذف کرد؟
    بله، به خاطر اینکه داره از تابع CopyMemory برای بدست آوردن مقادیر RGB استفاده میکنه.
    چرا، می تونید اینو حذف کنید و خودتون این مقادیر رو محاسبه کنید:
    https://barnamenevis.org/showpo...34&postcount=1
    نقل قول نوشته شده توسط ehsanocx مشاهده تاپیک
    به جای textbox از richtextbox استفاده کنم بهتر نیست ؟ توی تکست باکس چقدر متن جا می گیره ؟
    فکر نمی کنم فرقی داشته باشه. تا اینجا که با TextBox به مشکلی برخورد نکردید.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  23. #23
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: برداشتن pixel های یک عکس

    دوست من توی این تایپیک که تبدیل RGB به Long نیست که. این رو میزارم جواب نمی ده
    Private Sub LngToRGB(LCul As Long, R As Byte, G As Byte, B As Byte)
    R = LCul And &HFF&
    G = (LCul And &HFF00&) \ &H100&
    B = (LCul And &HFF0000) \ &H10000
    End Sub

    باید چیکار کنم؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •