Using Filters

Practical examples of using filters for blur, sharpening, and noise reduction.

Basic Filter Usage

Simple Blur

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");
const image = await Image.decode(data);

// Apply fast box blur
image.blur(2);

await Deno.writeFile("blurred.png", await image.encode("png"));

Gaussian Blur

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");
const image = await Image.decode(data);

// High-quality Gaussian blur
image.gaussianBlur(3);

await Deno.writeFile("gaussian.png", await image.encode("png"));

Sharpening

import { Image } from "@cross/image";

const data = await Deno.readFile("soft-photo.jpg");
const image = await Image.decode(data);

// Sharpen the image
image.sharpen(0.6);

await Deno.writeFile("sharp.png", await image.encode("png"));

Median Filter for Noise Removal

import { Image } from "@cross/image";

const data = await Deno.readFile("noisy-photo.jpg");
const image = await Image.decode(data);

// Remove noise with median filter
image.medianFilter(2);

await Deno.writeFile("denoised.png", await image.encode("png"));

Filter Workflows

Denoise and Sharpen

Clean up noisy images and restore sharpness:

import { Image } from "@cross/image";

const data = await Deno.readFile("noisy-photo.jpg");
const image = await Image.decode(data);

// First remove noise, then restore sharpness
image.medianFilter(1).sharpen(0.6);

await Deno.writeFile("cleaned.png", await image.encode("png"));

Soft Focus Effect

Create dreamy soft focus:

import { Image } from "@cross/image";

const data = await Deno.readFile("portrait.jpg");
const image = await Image.decode(data);

// Blur then sharpen for soft focus
image.gaussianBlur(3).sharpen(0.4);

await Deno.writeFile("soft-focus.png", await image.encode("png"));

Aggressive Smoothing

Multiple blur passes for extreme smoothing:

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");
const image = await Image.decode(data);

// Multiple passes for smooth skin effect
image.blur(2).blur(2).blur(2);

await Deno.writeFile("smooth.png", await image.encode("png"));

Portrait Enhancement

Skin Smoothing

import { Image } from "@cross/image";

const data = await Deno.readFile("portrait.jpg");
const image = await Image.decode(data);

// Denoise, smooth, then restore some detail
image
  .medianFilter(1) // Remove sensor noise
  .gaussianBlur(2) // Smooth skin
  .sharpen(0.3); // Restore facial features

await Deno.writeFile("enhanced-portrait.png", await image.encode("png"));

Professional Portrait

Complete portrait enhancement workflow:

import { Image } from "@cross/image";

const data = await Deno.readFile("portrait.jpg");
const image = await Image.decode(data);

image
  .medianFilter(1) // Clean noise
  .gaussianBlur(1) // Subtle smoothing
  .sharpen(0.4) // Restore detail
  .brightness(0.05) // Slight brighten
  .contrast(0.1) // Add punch
  .saturation(0.15); // Enhance colors

await Deno.writeFile("professional.png", await image.encode("png"));

Landscape Enhancement

Sharpen Landscapes

import { Image } from "@cross/image";

const data = await Deno.readFile("landscape.jpg");
const image = await Image.decode(data);

// Strong sharpening for landscapes
image
  .gaussianBlur(1) // Slight smooth first
  .sharpen(0.7); // Aggressive sharpen

await Deno.writeFile("sharp-landscape.png", await image.encode("png"));

Enhance Details

import { Image } from "@cross/image";

const data = await Deno.readFile("landscape.jpg");
const image = await Image.decode(data);

image
  .sharpen(0.6)
  .contrast(0.3)
  .saturation(0.4);

await Deno.writeFile("enhanced-landscape.png", await image.encode("png"));

Creative Effects

Motion Blur Simulation

import { Image } from "@cross/image";

const data = await Deno.readFile("action.jpg");
const image = await Image.decode(data);

// Heavy blur for motion effect
image.blur(10);

await Deno.writeFile("motion-blur.png", await image.encode("png"));

Dreamy Effect

import { Image } from "@cross/image";

const data = await Deno.readFile("romantic.jpg");
const image = await Image.decode(data);

image
  .gaussianBlur(5)
  .brightness(0.15)
  .saturation(0.2);

await Deno.writeFile("dreamy.png", await image.encode("png"));

High Contrast Sharp

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");
const image = await Image.decode(data);

image
  .sharpen(0.8)
  .contrast(0.4);

await Deno.writeFile("high-contrast.png", await image.encode("png"));

Noise Reduction Examples

Light Noise Removal

import { Image } from "@cross/image";

const data = await Deno.readFile("slightly-noisy.jpg");
const image = await Image.decode(data);

// Gentle denoising
image.medianFilter(1).sharpen(0.5);

await Deno.writeFile("cleaned-light.png", await image.encode("png"));

Heavy Noise Removal

import { Image } from "@cross/image";

const data = await Deno.readFile("very-noisy.jpg");
const image = await Image.decode(data);

// Aggressive denoising
image
  .medianFilter(3) // Strong denoising
  .gaussianBlur(1) // Additional smoothing
  .sharpen(0.5); // Restore some detail

await Deno.writeFile("cleaned-heavy.png", await image.encode("png"));

JPEG Artifact Reduction

import { Image } from "@cross/image";

const data = await Deno.readFile("compressed.jpg");
const image = await Image.decode(data);

// Reduce compression artifacts
image
  .medianFilter(2)
  .gaussianBlur(1);

await Deno.writeFile("artifact-reduced.png", await image.encode("png"));

Batch Processing

Sharpen All Photos

import { Image } from "@cross/image";

const files = ["photo1.jpg", "photo2.jpg", "photo3.jpg"];

for (const file of files) {
  const data = await Deno.readFile(file);
  const image = await Image.decode(data);

  image.sharpen(0.6);

  const output = file.replace(".jpg", "-sharp.jpg");
  await Deno.writeFile(output, await image.encode("jpeg", { quality: 90 }));

  console.log(`Sharpened ${file}`);
}

Apply Consistent Smoothing

import { Image } from "@cross/image";

const files = ["photo1.jpg", "photo2.jpg", "photo3.jpg"];

for (const file of files) {
  const data = await Deno.readFile(file);
  const image = await Image.decode(data);

  // Consistent smoothing workflow
  image.medianFilter(1).gaussianBlur(2).sharpen(0.3);

  const output = file.replace(".jpg", "-smooth.jpg");
  await Deno.writeFile(output, await image.encode("jpeg", { quality: 90 }));

  console.log(`Smoothed ${file}`);
}

Filter Radius Comparison

Testing Different Blur Radii

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");

const radii = [1, 2, 3, 5, 10];

for (const radius of radii) {
  const image = await Image.decode(data);
  image.gaussianBlur(radius);

  await Deno.writeFile(
    `blur-radius-${radius}.png`,
    await image.encode("png"),
  );

  console.log(`Created blur with radius ${radius}`);
}

Testing Different Sharpen Amounts

import { Image } from "@cross/image";

const data = await Deno.readFile("photo.jpg");

const amounts = [0.2, 0.4, 0.6, 0.8, 1.0];

for (const amount of amounts) {
  const image = await Image.decode(data);
  image.sharpen(amount);

  await Deno.writeFile(
    `sharpen-${amount}.png`,
    await image.encode("png"),
  );

  console.log(`Created sharpen with amount ${amount}`);
}

Combining with Color Adjustments

Filtered Portrait

import { Image } from "@cross/image";

const data = await Deno.readFile("portrait.jpg");
const image = await Image.decode(data);

image
  .medianFilter(1) // Denoise
  .gaussianBlur(2) // Smooth
  .sharpen(0.4) // Detail
  .brightness(0.1) // Brighten
  .saturation(0.2); // Enhance colors

await Deno.writeFile("filtered-portrait.png", await image.encode("png"));

Filtered Landscape

import { Image } from "@cross/image";

const data = await Deno.readFile("landscape.jpg");
const image = await Image.decode(data);

image
  .gaussianBlur(1) // Slight smooth
  .sharpen(0.7) // Strong detail
  .contrast(0.3) // Dramatic
  .saturation(0.4); // Vibrant

await Deno.writeFile("filtered-landscape.png", await image.encode("png"));

Node.js Examples

Sharpen in Node.js

import { readFile, writeFile } from "node:fs/promises";
import { Image } from "@cross/image";

const data = await readFile("photo.jpg");
const image = await Image.decode(data);

image.sharpen(0.6);

const output = await image.encode("jpeg", { quality: 90 });
await writeFile("sharp.jpg", output);

Denoise in Node.js

import { readFile, writeFile } from "node:fs/promises";
import { Image } from "@cross/image";

const data = await readFile("noisy.jpg");
const image = await Image.decode(data);

image.medianFilter(2).sharpen(0.5);

const output = await image.encode("jpeg", { quality: 90 });
await writeFile("clean.jpg", output);

Bun Examples

Blur in Bun

import { Image } from "@cross/image";

const file = Bun.file("photo.jpg");
const data = new Uint8Array(await file.arrayBuffer());
const image = await Image.decode(data);

image.gaussianBlur(3);

const output = await image.encode("png");
await Bun.write("blurred.png", output);