اطلاعیه

Collapse
No announcement yet.

کاهش حجم عکس و آیکون برای LCD گرافیکی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کاهش حجم عکس و آیکون برای LCD گرافیکی

    درود
    من یک سری عکس تک رنگ دارم که میخوام روی ال سی دی 7 اینچ نمایش بدم
    ولی نرم افزار هایی که تبدیل به کد میکنند دقیقا حجم کدی را تولید میکنند که یه عکس تمام رنگی داره
    چه راه کاری پیشنهاد میکنید به غیر از استفاده از مموری SD

    #2
    پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

    از الگوریتم های فشرده سازی استفاده کنید
    مثل lz4 یا lzss جز این راهی نداره و یا این که عکس ها رو روی یک حافظه خارجی ذخیره کنید

    دیدگاه


      #3
      پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

      میشه یکم بیشتر توضیح بدید ؟؟؟

      دیدگاه


        #4
        پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

        یه چیزی عجله ای نوشتم کار کرد . خخخخخ با نرم افزار تابلو روان یه شکل بکسید بریزید داخلش فقط سایزش حتما 16 * 16 باشه
        بعد اندازه بهش بدید که چند برابرش کنه .

        void LCD_WRITE_ICONE(int Xi , int Yi , int COLOR,int BACKLIGHT,char SIZE ,char *pik){
        int i,T=0;
        int i2;
        long x,y;
        char data;
        int s,c;
        y=Yi;
        for(i2=0 ; i2<32 ; i2+=2){
        data=pik[i2+1];
        x=Xi;
        for(i=0 ; i<16 ; i++){


        if(i==8)data=pik[i2];
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        if((data & 1)==0 ){
        for(c=0 ; c<SIZE; c++)
        {
        for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,BACKLIGHT);
        }
        }
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        else {
        for(c=0 ; c<SIZE; c++){
        for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,COLOR);
        }

        }
        data>>=1;
        x=(x+SIZE)-1;


        }
        y=y+(SIZE)-1;
        }

        }
        جدیدترین ویرایش توسط sepehr63; ۱۷:۱۵ ۱۳۹۶/۰۲/۱۵.

        دیدگاه


          #5
          پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

          ببینید 16*16 که حجمی پیدا نمیکنه ، اگر تک رنگ باشه باید هر ایکون 32 بایت از حافظه فلش میگیره - اصلا به صرفه برای پیاده سازی الگوریتم های فشره سازی نیست !
          من منظورم عکس هایی بود که مثلا 150 کیلو حجم دارن ، میشه اینا رو رسوند به 10 کیلو البته بسته به عکسش

          دیدگاه


            #6
            پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

            تو این کد من آیکن 16 * 16 میکشم ولی سایز اونو میتونم بزرگ و کوچک کنم
            مثلا سایز عدد 50 بدم کل ال سی دی من اون آیکن نمایش میده و اگه عدد 1 بدم اندازه واقعی اون یعنی 16 در 16 پیکسل میشه

            میشه در مورد فشرده سازی توضیح بیشتری بدید یا یک نمونه کد قرار بدید.

            دیدگاه


              #7
              پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

              دوست عزیز

              هر چیزی بهایی داره که باید پرداخت بشه
              الگوریتمهای فشرده سازی برای هر مرحله اکسترکت به حجم بالایی از توان محاسباتی نیاز دارند ....
              به طور مثال فرمت JPG یکی از روشهای فشرده سازی بسیار رایج میباشد ولی حداقل میکروهای 8 بیتی به طور مستقیم امکان استفاده سریع از آن را ندارند و تنها فرمت بدون فشرده سازی BMP برای آنها قابل استفاده مستقیم میباشد
              پاره ای از رویکردهای دفاعی

              دیدگاه


                #8
                پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

                آقا به یه مشکلی بر خوردم
                وقتی من کد های آیکن توی فلش میریزم و با تابع فراخوانی میکنم اررور میده

                const unsigned char ICONE_SETTING[128]=
                {
                0x00,0x00,0x00,0x00, // 0004 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                0x00,0x0F,0xF0,0x00, // 0008 . . . . . . . . . . . . # # # # # # # # . . . . . . . . . . . .
                0x00,0x0F,0xF0,0x00, // 000C . . . . . . . . . . . . # # # # # # # # . . . . . . . . . . . .
                0x01,0x8C,0x31,0x80, // 0010 . . . . . . . # # . . . # # . . . . # # . . . # # . . . . . . .
                0x03,0xCC,0x33,0xC0, // 0014 . . . . . . # # # # . . # # . . . . # # . . # # # # . . . . . .
                0x07,0xFC,0x3F,0xE0, // 0018 . . . . . # # # # # # # # # . . . . # # # # # # # # # . . . . .
                0x0E,0x78,0x1E,0x70, // 001C . . . . # # # . . # # # # . . . . . . # # # # . . # # # . . . .
                0x1C,0x00,0x00,0x38, // 0020 . . . # # # . . . . . . . . . . . . . . . . . . . . # # # . . .
                0x1C,0x00,0x00,0x38, // 0024 . . . # # # . . . . . . . . . . . . . . . . . . . . # # # . . .
                0x0E,0x07,0xC0,0x70, // 0028 . . . . # # # . . . . . . # # # # # . . . . . . . # # # . . . .
                0x06,0x0F,0xF0,0x60, // 002C . . . . . # # . . . . . # # # # # # # # . . . . . # # . . . . .
                0x0E,0x1C,0x38,0x60, // 0030 . . . . # # # . . . . # # # . . . . # # # . . . . # # . . . . .
                0x7C,0x38,0x1C,0x3E, // 0034 . # # # # # . . . . # # # . . . . . . # # # . . . . # # # # # .
                0xFC,0x70,0x0C,0x3E, // 0038 # # # # # # . . . # # # . . . . . . . . # # . . . . # # # # # .
                0xE0,0x60,0x06,0x06, // 003C # # # . . . . . . # # . . . . . . . . . . # # . . . . . . # # .
                0xE0,0x60,0x06,0x06, // 0040 # # # . . . . . . # # . . . . . . . . . . # # . . . . . . # # .
                0xE0,0x60,0x06,0x06, // 0044 # # # . . . . . . # # . . . . . . . . . . # # . . . . . . # # .
                0xE0,0x60,0x06,0x06, // 0048 # # # . . . . . . # # . . . . . . . . . . # # . . . . . . # # .
                0xFC,0x70,0x0E,0x3E, // 004C # # # # # # . . . # # # . . . . . . . . # # # . . . # # # # # .
                0x7C,0x30,0x1C,0x3E, // 0050 . # # # # # . . . . # # . . . . . . . # # # . . . . # # # # # .
                0x0E,0x3C,0x38,0x70, // 0054 . . . . # # # . . . # # # # . . . . # # # . . . . # # # . . . .
                0x06,0x1F,0xF0,0x60, // 0058 . . . . . # # . . . . # # # # # # # # # . . . . . # # . . . . .
                0x0E,0x07,0xE0,0x70, // 005C . . . . # # # . . . . . . # # # # # # . . . . . . # # # . . . .
                0x1C,0x00,0x00,0x38, // 0060 . . . # # # . . . . . . . . . . . . . . . . . . . . # # # . . .
                0x1C,0x00,0x00,0x38, // 0064 . . . # # # . . . . . . . . . . . . . . . . . . . . # # # . . .
                0x1E,0x60,0x0E,0x70, // 0068 . . . # # # # . . # # . . . . . . . . . # # # . . # # # . . . .
                0x0F,0xFC,0x3F,0xE0, // 006C . . . . # # # # # # # # # # . . . . # # # # # # # # # . . . . .
                0x07,0xDC,0x3B,0xC0, // 0070 . . . . . # # # # # . # # # . . . . # # # . # # # # . . . . . .
                0x03,0x8C,0x31,0x80, // 0074 . . . . . . # # # . . . # # . . . . # # . . . # # . . . . . . .
                0x00,0x0F,0xF0,0x00, // 0078 . . . . . . . . . . . . # # # # # # # # . . . . . . . . . . . .
                0x00,0x0F,0xF0,0x00, // 007C . . . . . . . . . . . . # # # # # # # # . . . . . . . . . . . .
                0x00,0x00,0x00,0x00 // 0080 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                };


                این هم ورودی تابع من

                void LCD_WRITE_ICONE(int Xi , int Yi , int COLOR,int BACKLIGHT,char SIZE ,char *pic)

                مشکل کجاست ؟؟؟
                جدیدترین ویرایش توسط sepehr63; ۰۷:۴۲ ۱۳۹۶/۰۲/۱۸.

                دیدگاه


                  #9
                  پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

                  کامپایلرتون چی هست ؟
                  محتوای تابع LCD_WRITE_ICONE چی هست ؟

                  دیدگاه


                    #10
                    پاسخ : کاهش حجم عکس و آیکون برای LCD گرافیکی

                    سلام . کامپایلر من KEIL ARM هست و توی پست اول محتوای اون هست
                    البته برای آیکن 16 در 16 پیکسل هست که اندازه بهش میدی براتون بزرگ میکنه

                    یه تابع دیگه نوشتم که آیکن 32 در 32 هست که اون هم قرار میدم


                    oid LCD_WRITE_ICONE32(int Xi , int Yi , int COLOR,int BACKLIGHT,char SIZE ,const char *pic){


                    int i,T=0;
                    int i2;
                    long x,y;
                    char data;
                    int s,c;


                    y=Yi;
                    for(i2=0 ; i2<128 ; i2+=4){
                    data=pic[i2+3];
                    x=Xi;
                    for(i=0 ; i<32 ; i++){


                    if(i==8)data=pic[i2+2];
                    else if(i==16)data=pic[i2+1];
                    else if(i==24)data=pic[i2];
                    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    if((data & 1)==0 ){
                    for(c=0 ; c<SIZE; c++)
                    {
                    for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,BACKLIGHT);
                    }
                    }
                    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    else {
                    for(c=0 ; c<SIZE; c++){
                    for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,COLOR);
                    }

                    }
                    data>>=1;
                    x=(x+SIZE)-2;


                    }
                    y=y+(SIZE)-1;
                    }

                    }




                    //++++++++++++++++++++++++++++++++++++++++++++++++++

                    دیدگاه

                    لطفا صبر کنید...
                    X