I29 Answer ― Scale Factor


#include <stdlib.h>
#include <stdio.h>
#include "basicImage.c" 

void multFactor( image img, double factor )
{
  int r, c, value ;
  
  for ( r=0; r<img.nrows; r++ )
    for ( c=0; c<img.ncols; c++ )
    {
      value = getPixel( img, r, c )*factor ;
      if      ( value > 255 ) value = 255 ;
      setPixel( img, r, c, (unsigned char)value );
    }
}

int main ( int argc, char* argv[] )
{
  image  img;
  double factor ;
  
  if ( argc != 4 )
  {
    printf("multFactor oldImage newImage factor\n");
    system( "pause" );
    exit( EXIT_FAILURE );
  }
  
  factor = atof( argv[3] );
  if ( factor <= 0.0 )
  {
    printf("factor should be greater than 0.0\n");
    exit( EXIT_FAILURE );
  }

  /* read in the old image */
  readPGMimage( &img, argv[1]);
  
  /* add in the constant value */
  multFactor( img, factor ) ;
  
  /* write the image to disk and free memory */
  writePGMimage( img, argv[2]);
  freeImage( &img );
}

Comments: