⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deskjet.c

📁 This is code tutorial for image processing include:histogram,sketon....
💻 C
📖 第 1 页 / 共 2 页
字号:
print_hist_image(printer, hist)
   FILE *printer;
   long hist[];
{
   char   c, d;
   int          i, j, k, limit;
   long   max;

   d = 0;
   c = 170;

      /********************************
      *
      *   First scale the histogram
      *
      *********************************/

   max = 0;
   for(i=0; i<64; i++)
      if(hist[i] > max) max = hist[i];

printf("\n\n\nmax is %d", max);
   if(max > 200){
      for(i=0; i<64; i++){
        hist[i] = hist[i]*200/max;
printf("\nhist[i] = %d", hist[i]);
      }
   }

      /********************************
      *
      *   Second print it
      *
      *********************************/

   for(i=0; i<64; i++){
      printf("\n\t\thist row %d hist[i]=%d", i, hist[i]);

            /* print the line 8 times */
      for(k=0; k<8; k++){

         end_graphics_mode(printer);
         select_300_dpi_resolution(printer);
         set_raster_width(printer);
         start_raster_graphics(printer);
         select_full_graphics_mode(printer);
         set_horizontal_offset(printer);

            /* this prints 200 bytes so print 200 */
         putc(ESCAPE, printer);
         putc('*', printer);
         putc('b', printer);
         putc('2', printer);
         putc('0', printer);
         putc('0', printer);
         putc('W', printer);

         if(hist[i] >= 200) hist[i] = 200;
         limit = 200 - hist[i];

         if(hist[i] == 0)        putc(c, printer);

         for(j=0; j<hist[i]; j++)
           putc(c, printer);
         for(j=0; j<limit; j++)
           putc(d, printer);

      }  /* ends loop over k */

   }  /* ends loop over i */

}  /* print_hist_image */





select_proportional_font(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('(', printer);
   putc('0', printer);
   putc('U', printer);
   putc(ESCAPE, printer);
   putc('(', printer);
   putc('s', printer);
   putc('0', printer);
   putc('u', printer);
   putc('1', printer);
   putc('p', printer);
   putc('1', printer);
   putc('2', printer);
   putc('v', printer);
   putc('0', printer);
   putc('s', printer);
   putc('0', printer);
   putc('b', printer);
   putc('5', printer);
   putc('t', printer);
   putc('2', printer);
   putc('Q', printer);

}



select_full_graphics_mode(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('b', printer);
   putc('0', printer);
   putc('M', printer);

}


set_horizontal_offset(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('b', printer);
   putc('4', printer);
   putc('9', printer);
   putc('6', printer);
   putc('X', printer);

}


end_graphics_mode(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('r', printer);
   putc('B', printer);
}


set_raster_width(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('r', printer);
   putc('2', printer);
   putc('2', printer);
   putc('0', printer);
   putc('0', printer);
   putc('S', printer);

}



start_raster_graphics(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('r', printer);
   putc('0', printer);
   putc('A', printer);

}





select_300_dpi_resolution(printer)

   FILE *printer;
{
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('t', printer);
   putc('3', printer);
   putc('0', printer);
   putc('0', printer);
   putc('R', printer);

}




print_byte_pattern(printer, b)
   FILE *printer;
   char b;
{
   char x;
   x = 1;

   putc(ESCAPE, printer);
   putc('*', printer);
   putc('b', printer);
   putc('1', printer);
   putc('W', printer);
   putc(b, printer);

}





print_bytes(printer, buffer)
   FILE *printer;
   char buffer[];
{
   int        i;

   putc(ESCAPE, printer);
   putc('*', printer);
   putc('b', printer);
   putc('2', printer);
   putc('0', printer);
   putc('0', printer);
   putc('W', printer);


   for(i=0; i<200; i++){
      putc(buffer[i], printer);
   }


}  /* ends print_bytes */









print_100_bytes(printer, buffer)
   FILE *printer;
   char buffer[];
{
   int        i;
   putc(ESCAPE, printer);
   putc('*', printer);
   putc('b', printer);
   putc('1', printer);
   putc('0', printer);
   putc('0', printer);
   putc('W', printer);

   for(i=0; i<100; i++){
      putc(buffer[i], printer);
   }
}  /* ends print_100_bytes */





print_original_100_row(printer, short_row)
   FILE  *printer;
   short short_row[200];
{
   char  row[8][200];
   char  c[200], response[80];
   int         i, j, k;
   short value;

   for(i=0; i<200; i++){


      value = short_row[i];
      if(value > 63) value = 63;
      if(value < 0)  value =  0;
      if(value < 32)
         value = 32 + (32-value) - 1;
      else
         if(value > 32)
            value = 32 - (value-32) - 1;


      for(j=0; j<8; j++){
         row[j][i] = patterns[value][j];
      }
   }

   for(i=0; i<8; i++){
      for(j=0; j<200; j++){
         c[j] = row[i][j];
      }
      set_horizontal_offset(printer);
      print_bytes(printer, c);
   }

}  /* ends print_original_100_row */





print_result_100_row(printer, short_row)
   FILE  *printer;
   short short_row[200];
{
   char  row[8][200];
   char  c[200], response[80];
   int         i, j, k;
   short value;

   for(i=0; i<200; i++){

      value = short_row[i];
      if(short_row[i] == 41) value = 63;
      if(short_row[i] == 69) value = 20;
      if(short_row[i] == 97) value = 40;


/***printf(" v=%d ", value);**/
      for(j=0; j<8; j++){
         row[j][i] = patterns[value][j];
      }
   }

   for(i=0; i<8; i++){
      for(j=0; j<200; j++){
         c[j] = row[i][j];
/*printf(" c[%d]=%x ", j, c[j]);*/
      }
printf("\ncalling print bytes i=%d j=%d", i, j);
      set_horizontal_offset(printer);
      print_bytes(printer, c);
   }

}  /* ends print_result_100_row */






perform_histogram_equalization(image, histogram)
   short image[ROWS][COLS];
   unsigned long histogram[];
{
   int area,
       i,
       j,
       k;
   unsigned long sum,
                 sum_of_h[256];
   double constant;


   sum = 0;
   for(i=0; i<256; i++){
      sum          = sum + histogram[i];
      sum_of_h[i] = sum;
   }

      /* constant = new # of gray levels div by area */
   constant = 64.0/20000.0;
   for(i=0; i<ROWS; i++){
      for(j=0; j<COLS; j++){
         k                 = image[i][j];
         image[i][j] = sum_of_h[k] * constant;
      }
   }
}  /* ends perform_histogram_equalization */






zero_long_histogram(histogram)
   unsigned long histogram[];
{
   int i;
   for(i=0; i<256; i++)
      histogram[i] = 0;
}  /* ends zero_long_histogram */




calculate_long_histogram(image, histogram)
   short  image[ROWS][COLS];
   unsigned long histogram[];
{
   int i,j,k;
   for(i=0; i<ROWS; i++){
      for(j=0; j<COLS; j++){
         k = image[i][j];
         histogram[k] = histogram[k] + 1;
      }
   }
}  /* ends calculate_long_histogram */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -