BrushCue Example: RGB Color Shift¶

Open In Colab

You can use this tool online at https://www.brushcue.com/tools/rgb-color-shift

In [ ]:
!pip install brushcue
In [1]:
import brushcue
from PIL import Image
import io

input_image_1 = brushcue.composition_monet_women_with_parasol() # insert your own image here
float_constant_2 = brushcue.float_constant(0.0)
float_constant_3 = brushcue.float_constant(0.0)
float_constant_4 = brushcue.float_constant(0.0)
float_constant_5 = brushcue.float_constant(0.0)
float_constant_6 = brushcue.float_constant(0.0)
float_constant_7 = brushcue.float_constant(0.0)
float_constant_8 = brushcue.float_constant(0.0)
float_constant_9 = brushcue.float_constant(0.0)
float_constant_10 = brushcue.float_constant(0.0)
float_constant_11 = brushcue.float_constant(0.0)
float_constant_12 = brushcue.float_constant(1.0)
float_constant_13 = brushcue.float_constant(0.0)
float_constant_14 = brushcue.float_constant(0.0)
float_constant_15 = brushcue.float_constant(0.0)
float_constant_16 = brushcue.float_constant(0.0)
float_constant_17 = brushcue.float_constant(1.0)
transform_2d_identity_18 = brushcue.transform2_identity()
float_constant_19 = brushcue.float_constant(0.0)
float_constant_20 = brushcue.float_constant(0.0)
float_constant_21 = brushcue.float_constant(0.0)
float_constant_22 = brushcue.float_constant(0.0)
float_constant_23 = brushcue.float_constant(0.0)
float_constant_24 = brushcue.float_constant(1.0)
float_constant_25 = brushcue.float_constant(0.0)
float_constant_26 = brushcue.float_constant(0.0)
float_constant_27 = brushcue.float_constant(0.0)
float_constant_28 = brushcue.float_constant(0.0)
float_constant_29 = brushcue.float_constant(0.0)
float_constant_30 = brushcue.float_constant(0.0)
float_constant_31 = brushcue.float_constant(0.0)
float_constant_32 = brushcue.float_constant(0.0)
float_constant_33 = brushcue.float_constant(0.0)
float_constant_34 = brushcue.float_constant(1.0)
float_constant_35 = brushcue.float_constant(1.0)
float_constant_36 = brushcue.float_constant(0.0)
float_constant_37 = brushcue.float_constant(0.0)
float_constant_38 = brushcue.float_constant(0.0)
float_constant_39 = brushcue.float_constant(0.0)
float_constant_40 = brushcue.float_constant(0.0)
float_constant_41 = brushcue.float_constant(0.0)
float_constant_42 = brushcue.float_constant(0.0)
float_constant_43 = brushcue.float_constant(0.0)
float_constant_44 = brushcue.float_constant(0.0)
float_constant_45 = brushcue.float_constant(0.0)
float_constant_46 = brushcue.float_constant(0.0)
float_constant_47 = brushcue.float_constant(0.0)
float_constant_48 = brushcue.float_constant(0.0)
float_constant_49 = brushcue.float_constant(0.0)
float_constant_50 = brushcue.float_constant(1.0)
transform_2d_identity_51 = brushcue.transform2_identity()
composition_size_52 = brushcue.composition_size(input_image_1)
int_constant_53 = brushcue.int_constant(2)
composition_size_54 = brushcue.composition_size(input_image_1)
int_constant_55 = brushcue.int_constant(2)
int_constant_56 = brushcue.int_constant(-56)
int_constant_57 = brushcue.int_constant(-69)
int_constant_58 = brushcue.int_constant(84)
int_constant_59 = brushcue.int_constant(30)
blue_linear_transform_60 = brushcue.composition_linear_transform(input_image_1, float_constant_2, float_constant_3, float_constant_4, float_constant_5, float_constant_6, float_constant_7, float_constant_8, float_constant_9, float_constant_10, float_constant_11, float_constant_12, float_constant_13, float_constant_14, float_constant_15, float_constant_16, float_constant_17)
green_linear_transform_61 = brushcue.composition_linear_transform(input_image_1, float_constant_19, float_constant_20, float_constant_21, float_constant_22, float_constant_23, float_constant_24, float_constant_25, float_constant_26, float_constant_27, float_constant_28, float_constant_29, float_constant_30, float_constant_31, float_constant_32, float_constant_33, float_constant_34)
red_linear_transform_62 = brushcue.composition_linear_transform(input_image_1, float_constant_35, float_constant_36, float_constant_37, float_constant_38, float_constant_39, float_constant_40, float_constant_41, float_constant_42, float_constant_43, float_constant_44, float_constant_45, float_constant_46, float_constant_47, float_constant_48, float_constant_49, float_constant_50)
vector_2_int_get_x_63 = brushcue.vector2i_x(composition_size_52)
vector_2_int_get_y_64 = brushcue.vector2i_y(composition_size_54)
vector_2_int_from_components_65 = brushcue.vector2i_from_components(int_constant_56, int_constant_57)
vector_2_int_from_components_66 = brushcue.vector2i_from_components(int_constant_58, int_constant_59)
blue_offset_67 = brushcue.vector2i_passthrough(vector_2_int_from_components_65)
green_offset_68 = brushcue.vector2i_passthrough(vector_2_int_from_components_66)
vector_2_int_get_x_69 = brushcue.vector2i_x(blue_offset_67)
vector_2_int_get_y_70 = brushcue.vector2i_y(blue_offset_67)
vector_2_int_get_x_71 = brushcue.vector2i_x(green_offset_68)
vector_2_int_get_x_72 = brushcue.vector2i_x(blue_offset_67)
vector_2_int_get_y_73 = brushcue.vector2i_y(green_offset_68)
vector_2_int_get_y_74 = brushcue.vector2i_y(blue_offset_67)
vector_2_int_get_x_75 = brushcue.vector2i_x(green_offset_68)
vector_2_int_get_y_76 = brushcue.vector2i_y(green_offset_68)
int_to_float_77 = brushcue.int_to_float(vector_2_int_get_x_69)
int_to_float_78 = brushcue.int_to_float(vector_2_int_get_y_70)
int_absolute_value_79 = brushcue.int_abs(vector_2_int_get_x_71)
int_absolute_value_80 = brushcue.int_abs(vector_2_int_get_x_72)
int_absolute_value_81 = brushcue.int_abs(vector_2_int_get_y_73)
int_absolute_value_82 = brushcue.int_abs(vector_2_int_get_y_74)
int_to_float_83 = brushcue.int_to_float(vector_2_int_get_x_75)
int_to_float_84 = brushcue.int_to_float(vector_2_int_get_y_76)
vector_2_float_from_components_85 = brushcue.vector2f_from_components(int_to_float_77, int_to_float_78)
int_max_86 = brushcue.int_max(int_absolute_value_79, int_absolute_value_80)
int_max_87 = brushcue.int_max(int_absolute_value_81, int_absolute_value_82)
vector_2_float_from_components_88 = brushcue.vector2f_from_components(int_to_float_83, int_to_float_84)
transform_2d_translation_89 = brushcue.transform2_translation(transform_2d_identity_18, vector_2_float_from_components_85)
crop_x_component_90 = brushcue.int_passthrough(int_max_86)
crop_y_component_91 = brushcue.int_passthrough(int_max_87)
transform_2d_translation_92 = brushcue.transform2_translation(transform_2d_identity_51, vector_2_float_from_components_88)
int_multiply_93 = brushcue.int_multiply(crop_x_component_90, int_constant_53)
int_multiply_94 = brushcue.int_multiply(crop_y_component_91, int_constant_55)
blend_green_over_red_95 = brushcue.composition_blend_add(green_linear_transform_61, red_linear_transform_62, transform_2d_translation_92)
int_subtract_96 = brushcue.int_subtract(vector_2_int_get_x_63, int_multiply_93)
int_subtract_97 = brushcue.int_subtract(vector_2_int_get_y_64, int_multiply_94)
blend_blue_over_green_and_red_98 = brushcue.composition_blend_add(blue_linear_transform_60, blend_green_over_red_95, transform_2d_translation_89)
crop_width_component_99 = brushcue.int_passthrough(int_subtract_96)
crop_height_component_100 = brushcue.int_passthrough(int_subtract_97)
bounds_2d_int_from_x_y_width_height_101 = brushcue.bounds2i_from_x_y_width_height(crop_x_component_90, crop_y_component_91, crop_width_component_99, crop_height_component_100)
composition_crop_102 = brushcue.composition_crop(blend_blue_over_green_and_red_98, bounds_2d_int_from_x_y_width_height_101)

ctx = brushcue.Context()
result = composition_crop_102.execute(ctx)
composition = result.as_composition()
data_bytes = composition.to_image_bytes(ctx)
img = Image.open(io.BytesIO(data_bytes))
img.thumbnail((400, 400)) # remove this line for full resolution
img
Out[1]:
No description has been provided for this image