Sign in to follow this  
TechnoRobbo

TR's B&W Photo

Recommended Posts

TR's B&W Photo 


Back in the day B&W Photographers used Color Filters to reinterpret the way color became greyscale.


Photographers like Ansel Adams shooting with huge accordian View Cameras used high F-Stops which produced realy cool hotspots in the center of the B&W Image. (Ansel Adams was also quite partial to using red and yellow filters to darken the sky).


 


This plugin simulates the use of color filters and hot spots in B&W photography.


 


Menu: Effect->Color


 


 


BWPhotoMenu.png?raw=1


 


 


Demo Video



 


 


Filter Examples


BWCOMPARE.png?raw=1


 


 


untouched Original


ColorPhoto.png?raw=1


 


B&W with Red Filter w/hotspot


BWPhoto.png?raw=1


 


 


 


The Code



// Submenu: Color
// Name: TR's B&W Photo
// Title: TR's B&W Photo - v1.0
// Author: TechnoRobbo
// URL: http://www.technorobbo
#region UICode
byte Amount1 = 0; // [1] Color Filters|Red Filter|Green Filter|Blue Filter|Cyan Filter|Magenta|Yellow Filter
double Amount2 = 0.75; // [0,1] Hot Spot Effect
#endregion

void Render(Surface dst, Surface src, Rectangle rect)
{
Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left;
int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top;
double maxrad = Math.Sqrt(CenterX * CenterX + CenterY * CenterY);

ColorBgra CP;
for (int y = rect.Top; y < rect.Bottom; y++)
{
for (int x = rect.Left; x < rect.Right; x++)
{
double fade = Math.Sqrt((x-CenterX) * (x-CenterX) + (y-CenterY) * (y-CenterY))/ maxrad;
fade *=fade;
fade = (1-fade) * Amount2 + 1 - Amount2;
CP = src[x,y];
switch (Amount1){
case 0:
CP.G= CP.R;
break;
case 1:
CP.R=CP.G;
break;

case 2:
CP.R=CP.B;
break;

case 3:
CP.R= Int32Util.ClampToByte((CP.B + CP.G)/2);
break;
case 4:
CP.R=Int32Util.ClampToByte((CP.R + CP.B)/2);
break;

case 5:
CP.R=Int32Util.ClampToByte((CP.R + CP.G)/2);
break;
}
byte newbyte = Int32Util.ClampToByte((int)(fade * (double)CP.R));
CP.R = newbyte;
CP.G =newbyte ;
CP.B = newbyte ;
CP.A = CP.A;

dst[x,y] = CP;
}
}
}


TRsBWPhoto.zip

Edited by TechnoRobbo
  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this