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

نام تاپیک: باز کردن عکس و خواندن پیکسل ها در ++c

  1. #1

    باز کردن عکس و خواندن پیکسل ها در ++c

    سلام

    ایا در ++c می شود یک فایل عکس باز کرد ؟

    من می خواهم یک عکس را ورودی بگیرم و کد های rgb پیکسل های عکس را خروجی بدهم .

    ممنون

  2. #2

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

    نقل قول نوشته شده توسط vertionality مشاهده تاپیک
    سلام

    ایا در ++c می شود یک فایل عکس باز کرد ؟

    من می خواهم یک عکس را ورودی بگیرم و کد های rgb پیکسل های عکس را خروجی بدهم .

    ممنون
    خوب معلوم که میشود یک درصد فکر کن نشه!!!
    منتهی با چه کامپایلری و تو کدوم IDE تو چه سیستم عاملی منظورتون هست؟
    برای مثال این برنامه یکسری افکت بر روی یک bitmap اجرا میکنه...


    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    /* Set to 1 to enable debug log traces. */
    #define DEBUG 0

    /* Set to 1 to optimize memory stores when generating plasma. */
    #define OPTIMIZE_WRITES 1

    /* Return current time in milliseconds */
    static double now_ms(void)
    {
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return tv.tv_sec*1000. + tv.tv_usec/1000.;
    }

    typedef int32_t Fixed;

    #define FIXED_BITS 16
    #define FIXED_ONE (1 << FIXED_BITS)
    #define FIXED_AVERAGE(x,y) (((x) + (y)) >> 1)

    #define FIXED_FROM_INT(x) ((x) << FIXED_BITS)
    #define FIXED_TO_INT(x) ((x) >> FIXED_BITS)

    #define FIXED_FROM_FLOAT(x) ((Fixed)((x)*FIXED_ONE))
    #define FIXED_TO_FLOAT(x) ((x)/(1.*FIXED_ONE))

    #define FIXED_MUL(x,y) (((int64_t)(x) * (y)) >> FIXED_BITS)
    #define FIXED_DIV(x,y) (((int64_t)(x) * FIXED_ONE) / (y))

    #define FIXED_DIV2(x) ((x) >> 1)
    #define FIXED_AVERAGE(x,y) (((x) + (y)) >> 1)

    #define FIXED_FRAC(x) ((x) & ((1 << FIXED_BITS)-1))
    #define FIXED_TRUNC(x) ((x) & ~((1 << FIXED_BITS)-1))

    #define FIXED_FROM_INT_FLOAT(x,f) (Fixed)((x)*(FIXED_ONE*(f)))

    typedef int32_t Angle;

    #define ANGLE_BITS 9

    #if ANGLE_BITS < 8
    # error ANGLE_BITS must be at least 8
    #endif

    #define ANGLE_2PI (1 << ANGLE_BITS)
    #define ANGLE_PI (1 << (ANGLE_BITS-1))
    #define ANGLE_PI2 (1 << (ANGLE_BITS-2))
    #define ANGLE_PI4 (1 << (ANGLE_BITS-3))

    #define ANGLE_FROM_FLOAT(x) (Angle)((x)*ANGLE_PI/M_PI)
    #define ANGLE_TO_FLOAT(x) ((x)*M_PI/ANGLE_PI)

    #if ANGLE_BITS <= FIXED_BITS
    # define ANGLE_FROM_FIXED(x) (Angle)((x) >> (FIXED_BITS - ANGLE_BITS))
    # define ANGLE_TO_FIXED(x) (Fixed)((x) << (FIXED_BITS - ANGLE_BITS))
    #else
    # define ANGLE_FROM_FIXED(x) (Angle)((x) << (ANGLE_BITS - FIXED_BITS))
    # define ANGLE_TO_FIXED(x) (Fixed)((x) >> (ANGLE_BITS - FIXED_BITS))
    #endif

    static Fixed angle_sin_tab[ANGLE_2PI+1];

    static void init_angles(void)
    {
    int nn;
    for (nn = 0; nn < ANGLE_2PI+1; nn++) {
    double radians = nn*M_PI/ANGLE_PI;
    angle_sin_tab[nn] = FIXED_FROM_FLOAT(sin(radians));
    }
    }

    static __inline__ Fixed angle_sin( Angle a )
    {
    return angle_sin_tab[(uint32_t)a & (ANGLE_2PI-1)];
    }

    static __inline__ Fixed angle_cos( Angle a )
    {
    return angle_sin(a + ANGLE_PI2);
    }

    static __inline__ Fixed fixed_sin( Fixed f )
    {
    return angle_sin(ANGLE_FROM_FIXED(f));
    }

    static __inline__ Fixed fixed_cos( Fixed f )
    {
    return angle_cos(ANGLE_FROM_FIXED(f));
    }

    /* Color palette used for rendering the plasma */
    #define PALETTE_BITS 8
    #define PALETTE_SIZE (1 << PALETTE_BITS)

    #if PALETTE_BITS > FIXED_BITS
    # error PALETTE_BITS must be smaller than FIXED_BITS
    #endif

    static uint16_t palette[PALETTE_SIZE];

    static uint16_t make565(int red, int green, int blue)
    {
    return (uint16_t)( ((red << 8) & 0xf800) |
    ((green << 3) & 0x07e0) |
    ((blue >> 3) & 0x001f) );
    }

    static void init_palette(void)
    {
    int nn, mm = 0;
    /* fun with colors */
    for (nn = 0; nn < PALETTE_SIZE/4; nn++) {
    int jj = (nn-mm)*4*255/PALETTE_SIZE;
    palette[nn] = make565(255, jj, 255-jj);
    }

    for ( mm = nn; nn < PALETTE_SIZE/2; nn++ ) {
    int jj = (nn-mm)*4*255/PALETTE_SIZE;
    palette[nn] = make565(255-jj, 255, jj);
    }

    for ( mm = nn; nn < PALETTE_SIZE*3/4; nn++ ) {
    int jj = (nn-mm)*4*255/PALETTE_SIZE;
    palette[nn] = make565(0, 255-jj, 255);
    }

    for ( mm = nn; nn < PALETTE_SIZE; nn++ ) {
    int jj = (nn-mm)*4*255/PALETTE_SIZE;
    palette[nn] = make565(jj, 0, 255);
    }
    }

    static __inline__ uint16_t palette_from_fixed( Fixed x )
    {
    if (x < 0) x = -x;
    if (x >= FIXED_ONE) x = FIXED_ONE-1;
    int idx = FIXED_FRAC(x) >> (FIXED_BITS - PALETTE_BITS);
    return palette[idx & (PALETTE_SIZE-1)];
    }

    /* Angles expressed as fixed point radians */

    static void init_tables(void)
    {
    init_palette();
    init_angles();
    }

    static void fill_plasma( AndroidBitmapInfo* info, void* pixels, double t )
    {
    Fixed yt1 = FIXED_FROM_FLOAT(t/1230.);
    Fixed yt2 = yt1;
    Fixed xt10 = FIXED_FROM_FLOAT(t/3000.);
    Fixed xt20 = xt10;

    #define YT1_INCR FIXED_FROM_FLOAT(1/100.)
    #define YT2_INCR FIXED_FROM_FLOAT(1/163.)

    int yy;
    for (yy = 0; yy < info->height; yy++) {
    uint16_t* line = (uint16_t*)pixels;
    Fixed base = fixed_sin(yt1) + fixed_sin(yt2);
    Fixed xt1 = xt10;
    Fixed xt2 = xt20;

    yt1 += YT1_INCR;
    yt2 += YT2_INCR;

    #define XT1_INCR FIXED_FROM_FLOAT(1/173.)
    #define XT2_INCR FIXED_FROM_FLOAT(1/242.)

    #if OPTIMIZE_WRITES

    uint16_t* line_end = line + info->width;

    if (line < line_end) {
    if (((uint32_t)(uintptr_t)line & 3) != 0) {
    Fixed ii = base + fixed_sin(xt1) + fixed_sin(xt2);

    xt1 += XT1_INCR;
    xt2 += XT2_INCR;

    line[0] = palette_from_fixed(ii >> 2);
    line++;
    }

    while (line + 2 <= line_end) {
    Fixed i1 = base + fixed_sin(xt1) + fixed_sin(xt2);
    xt1 += XT1_INCR;
    xt2 += XT2_INCR;

    Fixed i2 = base + fixed_sin(xt1) + fixed_sin(xt2);
    xt1 += XT1_INCR;
    xt2 += XT2_INCR;

    uint32_t pixel = ((uint32_t)palette_from_fixed(i1 >> 2) << 16) |
    (uint32_t)palette_from_fixed(i2 >> 2);

    ((uint32_t*)line)[0] = pixel;
    line += 2;
    }

    if (line < line_end) {
    Fixed ii = base + fixed_sin(xt1) + fixed_sin(xt2);
    line[0] = palette_from_fixed(ii >> 2);
    line++;
    }
    }
    #else /* !OPTIMIZE_WRITES */
    int xx;
    for (xx = 0; xx < info->width; xx++) {

    Fixed ii = base + fixed_sin(xt1) + fixed_sin(xt2);

    xt1 += XT1_INCR;
    xt2 += XT2_INCR;

    line[xx] = palette_from_fixed(ii / 4);
    }
    #endif /* !OPTIMIZE_WRITES */

    // go to next line
    pixels = (char*)pixels + info->stride;
    }
    }

    /* simple stats management */
    typedef struct {
    double renderTime;
    double frameTime;
    } FrameStats;

    #define MAX_FRAME_STATS 200
    #define MAX_PERIOD_MS 1500

    typedef struct {
    double firstTime;
    double lastTime;
    double frameTime;

    int firstFrame;
    int numFrames;
    FrameStats frames[ MAX_FRAME_STATS ];
    } Stats;

    static void
    stats_init( Stats* s )
    {
    s->lastTime = now_ms();
    s->firstTime = 0.;
    s->firstFrame = 0;
    s->numFrames = 0;
    }

    static void
    stats_startFrame( Stats* s )
    {
    s->frameTime = now_ms();
    }

    static void
    stats_endFrame( Stats* s )
    {
    double now = now_ms();
    double renderTime = now - s->frameTime;
    double frameTime = now - s->lastTime;
    int nn;

    if (now - s->firstTime >= MAX_PERIOD_MS) {
    if (s->numFrames > 0) {
    double minRender, maxRender, avgRender;
    double minFrame, maxFrame, avgFrame;
    int count;

    nn = s->firstFrame;
    minRender = maxRender = avgRender = s->frames[nn].renderTime;
    minFrame = maxFrame = avgFrame = s->frames[nn].frameTime;
    for (count = s->numFrames; count > 0; count-- ) {
    nn += 1;
    if (nn >= MAX_FRAME_STATS)
    nn -= MAX_FRAME_STATS;
    double render = s->frames[nn].renderTime;
    if (render < minRender) minRender = render;
    if (render > maxRender) maxRender = render;
    double frame = s->frames[nn].frameTime;
    if (frame < minFrame) minFrame = frame;
    if (frame > maxFrame) maxFrame = frame;
    avgRender += render;
    avgFrame += frame;
    }
    avgRender /= s->numFrames;
    avgFrame /= s->numFrames;

    LOGI("frame/s (avg,min,max) = (%.1f,%.1f,%.1f) "
    "render time ms (avg,min,max) = (%.1f,%.1f,%.1f)\n",
    1000./avgFrame, 1000./maxFrame, 1000./minFrame,
    avgRender, minRender, maxRender);
    }
    s->numFrames = 0;
    s->firstFrame = 0;
    s->firstTime = now;
    }

    nn = s->firstFrame + s->numFrames;
    if (nn >= MAX_FRAME_STATS)
    nn -= MAX_FRAME_STATS;

    s->frames[nn].renderTime = renderTime;
    s->frames[nn].frameTime = frameTime;

    if (s->numFrames < MAX_FRAME_STATS) {
    s->numFrames += 1;
    } else {
    s->firstFrame += 1;
    if (s->firstFrame >= MAX_FRAME_STATS)
    s->firstFrame -= MAX_FRAME_STATS;
    }

    s->lastTime = now;
    }


  3. #3

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

    دستت درد نکنه ، فقط من از codeblocks استفاده کردم نتونستم خروجی بگیرم .

    من کلا در اخرش می خواهم یک فایل exe بسازم و برای نوع ide خیلی مهم نیست همین که

    در اخر خروجی exe بده کافیه ( احتمالا بعدا qt نصب کنم ) ولی فعلا codeblocks دارم .

    شما از چه ide استفاده می کنید ؟ الان دیفالت این کد را اجرا می کنه ؟

    من میخواهم ++c بنویسم سرعتش بهتره الان مشکلی نداره که این

    کد برای c هست ؟ چون h. داره اخر کتابخونه ها . ممنون

    من با ++c اجرا کردم ارور زیر را داد :


    ||=== Build: Debug in test (compiler: GNU GCC Compiler) ===|
    D:\Program\CodeBlocks\project\test\main.cpp||In function 'double now_ms()':|
    D:\Program\CodeBlocks\project\test\main.cpp|15|err or: aggregate 'now_ms()::timeval tv' has incomplete type and cannot be defined|
    D:\Program\CodeBlocks\project\test\main.cpp|16|err or: 'gettimeofday' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|20|err or: 'int32_t' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|43|err or: 'int32_t' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|67|err or: 'Fixed' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp||In function 'void init_angles()':|
    D:\Program\CodeBlocks\project\test\main.cpp|74|err or: 'angle_sin_tab' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|29|err or: 'Fixed' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|74|not e: in expansion of macro 'FIXED_FROM_FLOAT'|
    D:\Program\CodeBlocks\project\test\main.cpp|78|err or: 'Fixed' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|83|err or: 'Fixed' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|88|err or: 'Fixed' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|93|err or: 'Fixed' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|106|er ror: 'uint16_t' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|108|er ror: 'uint16_t' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp||In function 'void init_palette()':|
    D:\Program\CodeBlocks\project\test\main.cpp|121|er ror: 'palette' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|121|er ror: 'make565' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|126|er ror: 'palette' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|126|er ror: 'make565' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|131|er ror: 'palette' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|131|er ror: 'make565' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|136|er ror: 'palette' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|136|er ror: 'make565' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|140|er ror: 'uint16_t' does not name a type|
    D:\Program\CodeBlocks\project\test\main.cpp|156|er ror: variable or field 'fill_plasma' declared void|
    D:\Program\CodeBlocks\project\test\main.cpp|156|er ror: 'AndroidBitmapInfo' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|156|er ror: 'info' was not declared in this scope|
    D:\Program\CodeBlocks\project\test\main.cpp|156|er ror: expected primary-expression before 'void'|
    D:\Program\CodeBlocks\project\test\main.cpp|156|er ror: expected primary-expression before 'double'|
    D:\Program\CodeBlocks\project\test\main.cpp|150|wa rning: 'void init_tables()' defined but not used [-Wunused-function]|
    D:\Program\CodeBlocks\project\test\main.cpp|13|war ning: 'double now_ms()' defined but not used [-Wunused-function]|
    ||=== Build failed: 27 error(s), 2 warning(s) (0 minute(s), 1 second(s)) ===|



    با c اجرا کردم این یکی :



    ||=== Build file: "no target" in "no project" (compiler: unknown) ===|
    D:\Program\CodeBlocks\project\C\main.c||In function 'now_ms':|
    D:\Program\CodeBlocks\project\C\main.c|15|error: storage size of 'tv' isn't known|
    D:\Program\CodeBlocks\project\C\main.c|16|warning: implicit declaration of function 'gettimeofday' [-Wimplicit-function-declaration]|
    D:\Program\CodeBlocks\project\C\main.c|20|error: unknown type name 'int32_t'|
    D:\Program\CodeBlocks\project\C\main.c|43|error: unknown type name 'int32_t'|
    D:\Program\CodeBlocks\project\C\main.c||In function 'angle_sin':|
    D:\Program\CodeBlocks\project\C\main.c|80|error: 'uint32_t' undeclared (first use in this function)|
    D:\Program\CodeBlocks\project\C\main.c|80|note: each undeclared identifier is reported only once for each function it appears in|
    D:\Program\CodeBlocks\project\C\main.c|80|error: expected ']' before 'a'|
    D:\Program\CodeBlocks\project\C\main.c|106|error: unknown type name 'uint16_t'|
    D:\Program\CodeBlocks\project\C\main.c|108|error: unknown type name 'uint16_t'|
    D:\Program\CodeBlocks\project\C\main.c||In function 'make565':|
    D:\Program\CodeBlocks\project\C\main.c|110|error: 'uint16_t' undeclared (first use in this function)|
    D:\Program\CodeBlocks\project\C\main.c|140|error: unknown type name 'uint16_t'|
    D:\Program\CodeBlocks\project\C\main.c|156|error: unknown type name 'AndroidBitmapInfo'|
    D:\Program\CodeBlocks\project\C\main.c||In function 'stats_endFrame':|
    D:\Program\CodeBlocks\project\C\main.c|301|warning : implicit declaration of function 'LOGI' [-Wimplicit-function-declaration]|
    ||=== Build failed: 10 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|




  4. #4

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

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

    exe ای که میده مثل ++c فشرده نیست و سرعت پایینی هم داره . ( 10 برابر کمتر )

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

  5. #5

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

    نقل قول نوشته شده توسط vertionality مشاهده تاپیک
    توی پایتون خیلی راحت است با یکی دو خط کد کار تموم میشه ولی خروجی

    exe ای که میده مثل ++c فشرده نیست و سرعت پایینی هم داره . ( 10 برابر کمتر )

    ولی الان چه جوری میشه یک عکس باز کرد ؟ چون این تابع ورودی نگرفته . ممنون
    کدی که گذاشتم با CLANG(تو کدبلاکز LLVM CLANG هست) کامپایل میشه و در ضمن لایبرری هم هست خروجی exe نمیتونه داشته باشه و اگر خواستید بگید من فایل لایبرری را براتون پی ام میکنم و اینکه شما گفیتید میتونم من هم براتون نمونه گذاشتم که میتونید.

  6. #6

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    کدی که گذاشتم با CLANG(تو کدبلاکز LLVM CLANG هست) کامپایل میشه و در ضمن لایبرری هم هست خروجی exe نمیتونه داشته باشه و اگر خواستید بگید من فایل لایبرری را براتون پی ام میکنم و اینکه شما گفیتید میتونم من هم براتون نمونه گذاشتم که میتونید.
    دست شما درد نکنه . اره اره حتما پی ام کنید . من الان qt ریختم

    خیلی خوبه . کد بلاکس کلا به درد نمیخوره . من opencv , dlib, imagemagick ,im

    را امتحان کردم نتونستم اجرا کنم هر کدام ide مخصوص خودش را میخواست برای کامپایل .

    دست شما درد نکنه

  7. #7

    نقل قول: باز کردن عکس و خواندن پیکسل ها در ++c

    خیلی خوبه . کد بلاکس کلا به درد نمیخوره
    دوست عزیز!
    QT یک فریم وورک هست ! CodeBlocks یک محیط توسعه کراس پلت فرم هست که اتفاقا بسیار بسیار هم قوی و انعطاف پذیر حتی از ویژوال استودیو ویا حتی از محیط توسعه Qt البته اینم بگم از نقطه نظر برنامه نویسی عرض میکنم وگرنه برای ساخت برنامه های تحت دات نت البته که ویژوال استودیو عالی هست.
    فقط نکته ای که در محیط های توسعه ای به غیر از ویژوال استودیو هست مثل همین CodeBlocks ویا ++DevC استفاده از کامپایلر های مناسب برای برنامه تون هست چون در ویژوال استودیو با یک کامپایلر سر کار دارید خیلی متوچه این اشکلات نمیشید ولی در محیط های دیگه یکم سخت تر هست مدیریت کد
    مثال اگر شما کدی با کامپایلر های gcc برای ویندوز کد بنویسید و در کدبلاکز ویندوز اجرا بشه ! حالا همین کد رو اگر روی توزیع های مختلف بخواهید اجرا کنید با همون کامپایلر gcc و البته کدبلاکز تحت لینوکس به احتمال زیاد باید یکم تغییرات روی کدتون اعمال کنید تا کار کنه.
    حالا اگر از کامپایلرهای استاندارد دیگه مثل CLANG استفاده کنید هم همین داستان هست برای حفظ قابلیت حمل پذیری کدهاتون...
    البته در Qt داستان کمی متفاوت تر هست و این قضیه حفظ یکپارچگی کامپایلرها به این علت که در تمامی سیستم عامل ها توسط خود Qt ریلیز میشه خیلی بهتر هست و 98 درصد کد های برنامه در کیوت تحت ویندوز به راحتی در اکثر توزیع های لینوکس هم کار میکنه ویا حتی مکینتاش..
    حالا همه این داستا نها یکطرف استفاده از ++Modern C در این محیطها یکطرف انوقت مبینید که بهترین محیط توسعه برای این نوع برنامه نویسی ویژوال استودیو 2015 به بعد هست که حالا بماند...
    وهمین مسائل هست که شاید برخی فکر کنند که محیطهای مثل codeBlocks خوب نیستند.
    البته صرفا جهت اطلاع عرض کردم

تاپیک های مشابه

  1. سوال: باز کردن عکس ها از مسیر برنامه در گالری عکس ویژوال بیسیک
    نوشته شده توسط saeed7474 در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: پنج شنبه 11 مهر 1392, 04:43 صبح
  2. باز کردن عکس در MSpaint در اکسس
    نوشته شده توسط alighoch در بخش Access
    پاسخ: 3
    آخرین پست: پنج شنبه 15 بهمن 1388, 20:21 عصر
  3. نحوه باز کردن عکس از اکسس در vb
    نوشته شده توسط اذین4000 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 29 مرداد 1388, 18:37 عصر
  4. باز کردن عکس در فتوشاپ
    نوشته شده توسط mahyar-m در بخش C#‎‎
    پاسخ: 0
    آخرین پست: شنبه 05 اردیبهشت 1388, 13:37 عصر
  5. مشکل در باز کردن عکس(JPG)
    نوشته شده توسط Roya Rayane در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 5
    آخرین پست: یک شنبه 28 بهمن 1386, 22:08 عصر

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

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