<?php
  function image_basename($filename) {
    preg_match('/([^\/]+)\.jpe?g$/i', $filename, $matches);
    return $matches[1];
  }
  function image_jpg2ppm($filename) {
    $ppm_filename = image_basename($filename) . ".ppm";
    if (!file_exists($ppm_filename)) {
      exec("djpeg -outfile $ppm_filename $filename");
    }
    return $ppm_filename;
  }
  function image_size($filename) {
    image_jpg2ppm($filename);
    exec(sprintf("pnmfile %s.ppm", image_basename($filename)), $output);
    preg_match('/(\d+) by (\d+)/', $output[0], $matches);
    return array('width' => $matches[1], 'height' => $matches[2]);
  }
  function image_cleanup() {
    foreach (glob("*.ppm") as $filename) {
      unlink($filename);
    }
  }
  function image_resize($filename, $scale_size = 640) {
    $basename = image_basename($filename);
    $ppm_filename = image_jpg2ppm($filename);
    $size = image_size($filename);
    $scale_dimension = ($size['width'] > $size['height']) ? 'xsize' : 'ysize';
    $resize_filename = "$basename.med.jpg";
    $resize_ppm_filename = "$basename.med.ppm";
    exec("pnmscale -$scale_dimension $scale_size $ppm_filename " .
      "> $resize_ppm_filename");
    exec("cjpeg -outfile $resize_filename $resize_ppm_filename");
    return $resize_filename;
  }
?>
