Skip to content

Instantly share code, notes, and snippets.

@benjamin-chan
Last active August 20, 2020 14:46
Show Gist options
  • Save benjamin-chan/9dafcce86b042e8d76e6b77cb577dc05 to your computer and use it in GitHub Desktop.
Save benjamin-chan/9dafcce86b042e8d76e6b77cb577dc05 to your computer and use it in GitHub Desktop.
Convert film sizes from scanning to printing
library(magrittr)
library(dplyr)
library(knitr)

ratio <- 1 / 25.4  # in to mm conversion ratio
df <- 
  expand.grid(edge = c("Short", "Long"),
              film = c("35mm", "6X6", "6X7", "4X5"),
              dpiScan = 800 * (2 ^ seq(0, 3)),
              dpiPrint = c(300)) %>% 
  mutate(mm = case_when(film == "35mm" & edge == "Short" ~ 24,
                        film == "35mm" & edge == "Long" ~ 36,
                        film == "6X6" ~ 56,
                        film == "6X7" & edge == "Short" ~ 56,
                        film == "6X7" & edge == "Long" ~ 70,
                        film == "4X5" & edge == "Short" ~ 95,
                        film == "4X5" & edge == "Long" ~ 120)) %>% 
  mutate(pixels = mm * ratio * dpiScan) %>% 
  mutate(print = pixels / dpiPrint)
df <-
  inner_join(df %>% filter(edge == "Short"),
             df %>% filter(edge == "Long"),
             by = c("film", "dpiScan", "dpiPrint"),
             suffix = c("Short", "Long")) %>% 
  mutate(mp = mmShort * mmLong * (ratio * dpiScan / 1e3)^2) %>% 
  select(film, dpiScan, mp, pixelsShort, pixelsLong, dpiPrint, printShort, printLong) %>% 
  arrange(film, -dpiScan, -dpiPrint)
df %>% 
  kable(align = "lccccccc", digits = 0)
film dpiScan mp pixelsShort pixelsLong dpiPrint printShort printLong
35mm 6400 55 6047 9071 300 20 30
35mm 3200 14 3024 4535 300 10 15
35mm 1600 3 1512 2268 300 5 8
35mm 800 1 756 1134 300 3 4
6X6 6400 199 14110 14110 300 47 47
6X6 3200 50 7055 7055 300 24 24
6X6 1600 12 3528 3528 300 12 12
6X6 800 3 1764 1764 300 6 6
6X7 6400 249 14110 17638 300 47 59
6X7 3200 62 7055 8819 300 24 29
6X7 1600 16 3528 4409 300 12 15
6X7 800 4 1764 2205 300 6 7
4X5 6400 724 23937 30236 300 80 101
4X5 3200 181 11969 15118 300 40 50
4X5 1600 45 5984 7559 300 20 25
4X5 800 11 2992 3780 300 10 13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment