Advertisement
Mary_99

LAB 5 COMPRESIA

Feb 2nd, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstdlib>
  4. #include <cstring>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     int i;
  10.     int R0;
  11.     int  G0;
  12.     int B0;
  13.     int R;
  14.     int   G;
  15.     int B;
  16.     FILE *fin;
  17.     FILE *fout;
  18.  
  19.     fin = fopen("i23.bmp", "rb");
  20.     fout = fopen("i23_enc.bmp", "wb");
  21.     if (fin == NULL)
  22.     {
  23.         printf("Open file error.\n");
  24.         exit(1);
  25.     }
  26.     int sth;
  27.     for(int j=0; j<=54; j++)
  28.     {
  29.         fseek(fin, j, SEEK_SET); //seek set come back to begging of file
  30.         sth = fgetc(fin);
  31.         fputc(sth, fout);
  32.     }
  33.     fseek(fin, 1, SEEK_END);
  34.     long int size = ftell(fin);
  35.     fseek(fin, 55, SEEK_SET);
  36.     R0 = fgetc(fin);
  37.     fputc(R0, fout);
  38.     fseek(fin, 56, SEEK_SET);
  39.     G0 = fgetc(fin);
  40.     fputc(G0, fout);
  41.     fseek(fin, 57, SEEK_SET);
  42.     B0 = fgetc(fin);
  43.     fputc(R0, fout);
  44.     cout<<"RGB enc: "<<R0<<" "<<G0<<" "<<B0;
  45.     int r, g, b;
  46.     i = 58;
  47.     while(1)
  48.     {
  49.         if (i > size) break;
  50.         fseek(fin, i, SEEK_SET);
  51.         if(i%3==1)
  52.         {
  53.             r = fgetc(fin);
  54.             R = R0 - r;
  55.             R0 = r;
  56.             fputc(R, fout);
  57.         }
  58.         if(i%3==2)
  59.         {
  60.             g = fgetc(fin);
  61.             G = G0 - g;
  62.             G0 = g;
  63.             fputc(G, fout);
  64.         }
  65.         if(i%3==0)
  66.         {
  67.             b = fgetc(fin);
  68.             B = B0 - b;
  69.             B0 = b;
  70.             fputc(B, fout);
  71.         }
  72.         i++;
  73.  
  74.     }
  75.     fclose(fin);
  76.     fclose(fout);
  77.  
  78.     fin = fopen("i23_enc.bmp", "rb");
  79.     fout = fopen("i23_dec.bmp", "wb");
  80.     if (fin == NULL) {
  81.         printf("Cannot open file.\n");
  82.         exit(1);
  83.     }
  84.     for(int j=0; j<=54; j++)
  85.     {
  86.         fseek(fin, j, SEEK_SET);
  87.         sth = fgetc(fin);
  88.         fputc(sth, fout);
  89.     }
  90.     fseek(fin, 1, SEEK_END);
  91.     size = ftell(fin);
  92.     fseek(fin, 55, SEEK_SET);
  93.     R0 = fgetc(fin);
  94.     fputc(R0, fout);
  95.     fseek(fin, 56, SEEK_SET);
  96.     G0 = fgetc(fin);
  97.     fputc(G0, fout);
  98.     fseek(fin, 57, SEEK_SET);
  99.     B0 = fgetc(fin);
  100.     fputc(R0, fout);
  101.     cout<<endl<<"RGB dec: "<<R0<<" "<<G0<<" "<<B0;
  102.     i = 58;
  103.     while(1)
  104.     {
  105.         if (i > size) break;
  106.         fseek(fin, i, SEEK_SET);
  107.         if(i%3==1)
  108.         {
  109.             r = fgetc(fin);
  110.             R = R0 - r;
  111.  
  112.             R0 = R;
  113.             fputc(R, fout);
  114.         }
  115.         if(i%3==2)
  116.         {
  117.             g = fgetc(fin);
  118.             G = G0 - g;
  119.  
  120.             G0 = G;
  121.             fputc(G, fout);
  122.         }
  123.         if(i%3==0)
  124.         {
  125.             b = fgetc(fin);
  126.             B = B0 - b;
  127.  
  128.             B0 = B;
  129.             fputc(B, fout);
  130.         }
  131.         i++;
  132.  
  133.     }
  134.  
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement