photon_effects/
photon_effects.rs

1extern crate image;
2extern crate photon_rs as photon;
3extern crate time;
4
5/// Example
6///
7/// ```no_run
8/// extern crate photon_effects;
9///
10/// let input = "/tmp/logo.png";
11/// let output_dir = "/tmp/";
12///
13/// photon_effects::solarize(
14///   input,
15///   output_dir,
16///   "logo_solarize.png",
17/// ).expect("Couldn't create solarize image");
18/// ```
19pub fn solarize(
20    image_path: &str,
21    image_output_directory: &str,
22    parse_filename: &str,
23) -> Result<(), Box<dyn std::error::Error>> {
24    let mut img = photon::native::open_image(image_path)?;
25    photon::effects::solarize(&mut img);
26    photon::native::save_image(
27        img,
28        &format!("{}/{}_solarize.jpg", image_output_directory, parse_filename)[..],
29    );
30    println!(
31        "Generate {}/{}_solarize.jpg image.",
32        image_output_directory, parse_filename
33    );
34    Ok(())
35}
36
37/// Example
38///
39/// ```no_run
40/// extern crate photon_effects;
41///
42/// let input = "/tmp/logo.png";
43/// let output_dir = "/tmp/";
44///
45/// photon_effects::colorize(
46///   input,
47///   output_dir,
48///   "logo_colorize.png",
49/// ).expect("Couldn't create colorize image");
50/// ```
51pub fn colorize(
52    image_path: &str,
53    image_output_directory: &str,
54    parse_filename: &str,
55) -> Result<(), Box<dyn std::error::Error>> {
56    let mut img = photon::native::open_image(image_path)?;
57    photon::effects::colorize(&mut img);
58    photon::native::save_image(
59        img,
60        &format!("{}/{}_colorize.jpg", image_output_directory, parse_filename)[..],
61    );
62    println!(
63        "Generate {}/{}_colorize.jpg image.",
64        image_output_directory, parse_filename
65    );
66    Ok(())
67}
68
69/// Example
70///
71/// ```no_run
72/// extern crate photon_effects;
73///
74/// let input = "/tmp/logo.png";
75/// let output_dir = "/tmp/";
76///
77/// photon_effects::halftone(
78///   input,
79///   output_dir,
80///   "logo_halftone.png",
81/// ).expect("Couldn't create halftone image");
82/// ```
83pub fn halftone(
84    image_path: &str,
85    image_output_directory: &str,
86    parse_filename: &str,
87) -> Result<(), Box<dyn std::error::Error>> {
88    let mut img = photon::native::open_image(image_path)?;
89    photon::effects::halftone(&mut img);
90    photon::native::save_image(
91        img,
92        &format!("{}/{}_halftone.jpg", image_output_directory, parse_filename)[..],
93    );
94    println!(
95        "Generate {}/{}_halftone.jpg image.",
96        image_output_directory, parse_filename
97    );
98    Ok(())
99}
100
101/// Example
102///
103/// ```no_run
104/// extern crate photon_effects;
105///
106/// let input = "/tmp/logo.png";
107/// let output_dir = "/tmp/";
108///
109/// photon_effects::horizontal_strips(
110///   input,
111///   output_dir,
112///   "logo_horizontal_strips.png",
113///   5
114/// ).expect("Couldn't create horizontal_strips image");
115/// ```
116pub fn horizontal_strips(
117    image_path: &str,
118    image_output_directory: &str,
119    parse_filename: &str,
120    num_strips: u8,
121) -> Result<(), Box<dyn std::error::Error>> {
122    let mut img = photon::native::open_image(image_path)?;
123    photon::effects::horizontal_strips(&mut img, num_strips);
124    photon::native::save_image(
125        img,
126        &format!(
127            "{}/{}_horizontal_strips.jpg",
128            image_output_directory, parse_filename
129        )[..],
130    );
131    println!(
132        "Generate {}/{}_horizontal_strips.jpg image.",
133        image_output_directory, parse_filename
134    );
135    Ok(())
136}
137
138/// Example
139///
140/// ```no_run
141/// extern crate photon_effects;
142///
143/// let input = "/tmp/logo.png";
144/// let output_dir = "/tmp/";
145///
146/// photon_effects::vertical_strips(
147///   input,
148///   output_dir,
149///   "logo_vertical_strips.png",
150///   3
151/// ).expect("Couldn't create vertical_strips image");
152/// ```
153pub fn vertical_strips(
154    image_path: &str,
155    image_output_directory: &str,
156    parse_filename: &str,
157    num_strips: u8,
158) -> Result<(), Box<dyn std::error::Error>> {
159    let mut img = photon::native::open_image(image_path)?;
160    photon::effects::vertical_strips(&mut img, num_strips);
161    photon::native::save_image(
162        img,
163        &format!(
164            "{}/{}_horizontal_strips.jpg",
165            image_output_directory, parse_filename
166        )[..],
167    );
168    println!(
169        "Generate {}/{}_horizontal_strips.jpg image.",
170        image_output_directory, parse_filename
171    );
172    Ok(())
173}
174
175/// Example
176///
177/// ```no_run
178/// extern crate photon_effects;
179///
180/// let input = "/tmp/logo.png";
181/// let output_dir = "/tmp/";
182///
183/// photon_effects::inc_brightness(
184///   input,
185///   output_dir,
186///   "logo_inc_brightness.png",
187///   10
188/// ).expect("Couldn't create inc_brightness image");
189/// ```
190pub fn inc_brightness(
191    image_path: &str,
192    image_output_directory: &str,
193    parse_filename: &str,
194    brightness: u8,
195) -> Result<(), Box<dyn std::error::Error>> {
196    let mut img = photon::native::open_image(image_path)?;
197    photon::effects::inc_brightness(&mut img, brightness);
198    photon::native::save_image(
199        img,
200        &format!(
201            "{}/{}_inc_brightness.jpg",
202            image_output_directory, parse_filename
203        )[..],
204    );
205    println!(
206        "Generate {}/{}_inc_brightness.jpg image.",
207        image_output_directory, parse_filename
208    );
209    Ok(())
210}
211
212/// Example
213///
214/// ```no_run
215/// extern crate photon_effects;
216///
217/// let input = "/tmp/logo.png";
218/// let output_dir = "/tmp/";
219///
220/// photon_effects::multiple_offsets(
221///   input,
222///   output_dir,
223///   "logo_multiple_offsets.png",
224///   30,
225///   0,
226///   2
227/// ).expect("Couldn't create multiple_offsets image");
228/// ```
229pub fn multiple_offsets(
230    image_path: &str,
231    image_output_directory: &str,
232    parse_filename: &str,
233    offset: u32,
234    channel_index: usize,
235    channel_index2: usize,
236) -> Result<(), Box<dyn std::error::Error>> {
237    let mut img = photon::native::open_image(image_path)?;
238    photon::effects::multiple_offsets(&mut img, offset, channel_index, channel_index2);
239    photon::native::save_image(
240        img,
241        &format!(
242            "{}/{}_multiple_offsets.jpg",
243            image_output_directory, parse_filename
244        )[..],
245    );
246    println!(
247        "Generate {}/{}_multiple_offsets.jpg image.",
248        image_output_directory, parse_filename
249    );
250    Ok(())
251}
252
253/// Example
254///
255/// ```no_run
256/// extern crate photon_effects;
257///
258/// let input = "/tmp/logo.png";
259/// let output_dir = "/tmp/";
260///
261/// photon_effects::offset(
262///   input,
263///   output_dir,
264///   "logo_offset.png",
265///   0,
266///   30
267/// ).expect("Couldn't create offset image");
268/// ```
269pub fn offset(
270    image_path: &str,
271    image_output_directory: &str,
272    parse_filename: &str,
273    channel_index: usize,
274    offset: u32,
275) -> Result<(), Box<dyn std::error::Error>> {
276    let mut img = photon::native::open_image(image_path)?;
277    photon::effects::offset(&mut img, channel_index, offset);
278    photon::native::save_image(
279        img,
280        &format!("{}/{}_offset.jpg", image_output_directory, parse_filename)[..],
281    );
282    println!(
283        "Generate {}/{}_offset.jpg image.",
284        image_output_directory, parse_filename
285    );
286    Ok(())
287}
288
289/// Example
290///
291/// ```no_run
292/// extern crate photon_effects;
293///
294/// let input = "/tmp/logo.png";
295/// let output_dir = "/tmp/";
296///
297/// photon_effects::offset_blue(
298///   input,
299///   output_dir,
300///   "logo_offset_blue.png",
301///   20
302/// ).expect("Couldn't create offset_blue image");
303/// ```
304pub fn offset_blue(
305    image_path: &str,
306    image_output_directory: &str,
307    parse_filename: &str,
308    offset_amt: u32,
309) -> Result<(), Box<dyn std::error::Error>> {
310    let mut img = photon::native::open_image(image_path)?;
311    photon::effects::offset_blue(&mut img, offset_amt);
312    photon::native::save_image(
313        img,
314        &format!(
315            "{}/{}_offset_blue.jpg",
316            image_output_directory, parse_filename
317        )[..],
318    );
319    println!(
320        "Generate {}/{}_offset_blue.jpg image.",
321        image_output_directory, parse_filename
322    );
323    Ok(())
324}
325
326/// Example
327///
328/// ```no_run
329/// extern crate photon_effects;
330///
331/// let input = "/tmp/logo.png";
332/// let output_dir = "/tmp/";
333///
334/// photon_effects::offset_green(
335///   input,
336///   output_dir,
337///   "logo_offset_green.png",
338///   35
339/// ).expect("Couldn't create offset_green image");
340/// ```
341pub fn offset_green(
342    image_path: &str,
343    image_output_directory: &str,
344    parse_filename: &str,
345    offset_amt: u32,
346) -> Result<(), Box<dyn std::error::Error>> {
347    let mut img = photon::native::open_image(image_path)?;
348    photon::effects::offset_green(&mut img, offset_amt);
349    photon::native::save_image(
350        img,
351        &format!(
352            "{}/{}_offset_green.jpg",
353            image_output_directory, parse_filename
354        )[..],
355    );
356    println!(
357        "Generate {}/{}_offset_green.jpg image.",
358        image_output_directory, parse_filename
359    );
360    Ok(())
361}
362
363/// Example
364///
365/// ```no_run
366/// extern crate photon_effects;
367///
368/// let input = "/tmp/logo.png";
369/// let output_dir = "/tmp/";
370///
371/// photon_effects::offset_red(
372///   input,
373///   output_dir,
374///   "logo_offset_red.png",
375///   25
376/// ).expect("Couldn't create offset_red image");
377/// ```
378pub fn offset_red(
379    image_path: &str,
380    image_output_directory: &str,
381    parse_filename: &str,
382    offset_amt: u32,
383) -> Result<(), Box<dyn std::error::Error>> {
384    let mut img = photon::native::open_image(image_path)?;
385    photon::effects::offset_red(&mut img, offset_amt);
386    photon::native::save_image(
387        img,
388        &format!(
389            "{}/{}_offset_red.jpg",
390            image_output_directory, parse_filename
391        )[..],
392    );
393    println!(
394        "Generate {}/{}_offset_red.jpg image.",
395        image_output_directory, parse_filename
396    );
397    Ok(())
398}
399
400/// Example
401///
402/// ```no_run
403/// extern crate photon_effects;
404///
405/// let input = "/tmp/logo.png";
406/// let output_dir = "/tmp/";
407///
408/// photon_effects::primary(
409///   input,
410///   output_dir,
411///   "logo_primary.png"
412/// ).expect("Couldn't create primary image");
413/// ```
414pub fn primary(
415    image_path: &str,
416    image_output_directory: &str,
417    parse_filename: &str,
418) -> Result<(), Box<dyn std::error::Error>> {
419    let mut img = photon::native::open_image(image_path)?;
420    photon::effects::primary(&mut img);
421    photon::native::save_image(
422        img,
423        &format!("{}/{}_primary.jpg", image_output_directory, parse_filename)[..],
424    );
425    println!(
426        "Generate {}/{}_primary.jpg image.",
427        image_output_directory, parse_filename
428    );
429    Ok(())
430}
431
432/// Example
433///
434/// ```no_run
435/// extern crate photon_effects;
436///
437/// let input = "/tmp/logo.png";
438/// let output_dir = "/tmp/";
439///
440/// photon_effects::tint(
441///   input,
442///   output_dir,
443///   "logo_tint.png",
444///   18,
445///   22,
446///   26,
447/// ).expect("Couldn't create tint image");
448/// ```
449pub fn tint(
450    image_path: &str,
451    image_output_directory: &str,
452    parse_filename: &str,
453    r_offset: u32,
454    g_offset: u32,
455    b_offset: u32,
456) -> Result<(), Box<dyn std::error::Error>> {
457    let mut img = photon::native::open_image(image_path)?;
458    photon::effects::tint(&mut img, r_offset, g_offset, b_offset);
459    photon::native::save_image(
460        img,
461        &format!("{}/{}_tint.jpg", image_output_directory, parse_filename)[..],
462    );
463    println!(
464        "Generate {}/{}_tint.jpg image.",
465        image_output_directory, parse_filename
466    );
467    Ok(())
468}