cs50gespinoza

Untitled

Aug 4th, 2020
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.02 KB | None | 0 0
  1. #include "helpers.h"
  2. #include <math.h>
  3.  
  4. // Convert image to grayscale
  5. void grayscale(int height, int width, RGBTRIPLE image[height][width])
  6. {
  7.     int total = 0;
  8.     float avg = 0;
  9.  
  10.     for (int i = 0; i < height; i++)
  11.     {
  12.         for (int j = 0; j < width; j++)
  13.         {
  14.             total = image[i][j].rgbtRed + image[i][j].rgbtGreen + image[i][j].rgbtBlue;
  15.             avg = total / 3.00;
  16.             image[i][j].rgbtRed = round(avg);
  17.             image[i][j].rgbtGreen = round(avg);
  18.             image[i][j].rgbtBlue = round(avg);
  19.         }
  20.     }
  21.     return;
  22. }
  23.  
  24. // Convert image to sepia
  25. void sepia(int height, int width, RGBTRIPLE image[height][width])
  26. {
  27.     float sepia_red = 0;
  28.     float sepia_green = 0;
  29.     float sepia_blue = 0;
  30.     for (int i = 0; i < height; i++)
  31.     {
  32.         for (int j = 0; j < width; j++)
  33.         {
  34.             sepia_red = (.393 * image[i][j].rgbtRed + .769 * image[i][j].rgbtGreen + .189 * image[i][j].rgbtBlue);
  35.             sepia_green = (.349*image[i][j].rgbtRed) + (.686*image[i][j].rgbtGreen) + (.168*image[i][j].rgbtBlue);
  36.             sepia_blue = (.272*image[i][j].rgbtRed) + (.534*image[i][j].rgbtGreen) + (.131*image[i][j].rgbtBlue);
  37.  
  38.             if (sepia_red > 255)
  39.             {
  40.                 sepia_red = 255;
  41.             }
  42.             if (sepia_green > 255)
  43.             {
  44.                 sepia_green = 255;
  45.             }
  46.             if (sepia_blue > 255)
  47.             {
  48.                 sepia_blue = 255;
  49.             }
  50.             image[i][j].rgbtRed = round(sepia_red);
  51.             image[i][j].rgbtGreen = round(sepia_green);
  52.             image[i][j].rgbtBlue = round(sepia_blue);
  53.         }
  54.     }
  55.     return;
  56. }
  57.  
  58. // Reflect image horizontally
  59. void reflect(int height, int width, RGBTRIPLE image[height][width])
  60. {
  61.     int temp[3];
  62.     for (int i = 0; i < height; i++)
  63.     {
  64.         for (int j = 0; j < width/2; j ++)
  65.         {
  66.             temp[0] = image[i][j].rgbtRed;
  67.             temp[1] = image[i][j].rgbtGreen;
  68.             temp[2] = image[i][j].rgbtBlue;
  69.  
  70.             image[i][j].rgbtRed = image[i][width - j - 1].rgbtRed;
  71.             image[i][j].rgbtGreen = image[i][width - j - 1].rgbtGreen;
  72.             image[i][j].rgbtBlue = image[i][width - j - 1].rgbtBlue;
  73.  
  74.             image[i][width - j - 1].rgbtRed = temp[0];
  75.             image[i][width - j - 1].rgbtGreen = temp[1];
  76.             image[i][width - j - 1].rgbtBlue = temp[2];
  77.         }
  78.     }
  79.     return;
  80. }
  81.  
  82. // Blur image
  83. void blur(int height, int width, RGBTRIPLE image[height][width])
  84. {
  85.     int xred = 0;
  86.     int xgreen = 0;
  87.     int xblue = 0;
  88.     int yred = 0;
  89.     int ygreen = 0;
  90.     int yblue = 0;
  91.     int totalred = 0;
  92.     int totalgreen = 0;
  93.     int totalblue = 0;
  94.     int tempred = 0;
  95.     int tempgreen = 0;
  96.     int tempblue = 0;
  97.     int pixels_used = 0;
  98.  
  99.     for (int i = 0; i < height; i++)
  100.     {
  101.         for (int j = 0; j < width; j++)
  102.         {
  103.             for (int x = i - 1; x <= i + 1; x++)
  104.             {
  105.                 if (x >= 0 && x <= height - 1)
  106.                 {
  107.                     xred = image[i][j].rgbtRed;
  108.                     xgreen = image[i][j].rgbtGreen;
  109.                     xblue = image[i][j].rgbtBlue;
  110.                     pixels_used++;
  111.                 }
  112.             }
  113.             for (int y = j - 1; y <= j + 1; y++)
  114.             {
  115.                 if (y >= 0 && y < width - 1)
  116.                 {
  117.                     yred = image[i][j].rgbtRed;
  118.                     ygreen = image[i][j].rgbtGreen;
  119.                     yblue = image[i][j].rgbtBlue;
  120.                     pixels_used++;
  121.                 }
  122.             }
  123.  
  124.             totalred = xred + yred;
  125.             totalgreen = xgreen + ygreen;
  126.             totalblue = xblue + yblue;
  127.  
  128.             tempred = totalred / pixels_used;
  129.             tempgreen = totalgreen / pixels_used;
  130.             tempblue = totalblue / pixels_used;
  131.  
  132.             image[i][j].rgbtRed = round(tempred);
  133.             image[i][j].rgbtGreen = round(tempgreen);
  134.             image[i][j].rgbtBlue = round(tempblue);
  135.         }
  136.     }
  137.     return;
  138. }
  139.  
Advertisement
Add Comment
Please, Sign In to add comment