# ==========================================================
#  X, Y, Z, W (2×2 grid)

# ==========================================================

# --- Packages ---
if (!requireNamespace("imager", quietly = TRUE)) install.packages("imager")
library(imager)

# --- Load a clear grayscale image (cat) ---
animal_url <- "https://upload.wikimedia.org/wikipedia/commons/3/3a/Cat03.jpg"
tempfile_path <- tempfile(fileext = ".jpg")
download.file(animal_url, tempfile_path, mode = "wb", quiet = TRUE)

X <- load.image(tempfile_path) %>% grayscale()
X <- resize(X, -150, -150)  # Resize to balanced dimensions
X <- X / max(X)

# Define transformations
Y <- 0.9 * X + 0.1
Z <- X^2
W <- sqrt(X)

#Function to draw image with centered label below
add_label_bottom <- function(im, label, size = 1, y_offset = -0.18) {
  plot(im, axes = FALSE)
  text(x = 0.5, y = y_offset, label,
       col = "black", cex = size, font = 2,
       adj = 0.5, xpd = TRUE)
}

# Save as high-resolution image
png("JIT_Images_XYZW_HD.png", width = 3000, height = 3000, res = 300)

par(mfrow = c(2, 2),
    mar = c(4, 1, 1, 1),   # More bottom margin for labels
    oma = c(0, 0, 0, 0))

add_label_bottom(X, expression(X), size = 1)
add_label_bottom(Y, expression(Y == 0.9 * X + 0.1), size = 1)
add_label_bottom(Z, expression(Z == X^2), size = 1)
add_label_bottom(W, expression(W == sqrt(X)), size = 1)

par(mfrow = c(1, 1))
dev.off()

cat("✅ High-quality 2×2 figure (JIT_Images_XYZW_HD.png) saved successfully.\n")
