<?php
/*Skrypt pochodzi z książki "PHP. 101 praktycznych skryptów"
  autor: Marcin Lis                    http://marcinlis.com*/

function getImage($imgName, $imgType)
{
  if($imgType == IMG_JPEG){
    $img = imagecreatefromjpeg($imgName);
  }
  else if($imgType == IMG_GIF){
    $img = imagecreatefromgif($imgName);
  }
  else if($imgType == IMG_PNG){
    $img = imagecreatefrompng($imgName);
  }
  else{
    $img = null;
  }
  return $img;
}

function saveImage($img, $name, $imgType)
{
  $name = substr($name, 0, strlen($name) - 3);
  switch($imgType){
    case IMG_JPEG:
      $name .= "jpg";
      imagejpeg($img, $name);
      break;
    case IMG_GIF:
      $name .= "gif";
      imagegif($img, $name);
      break;
    case IMG_PNG:
      $name .= "png";
      imagepng($img, $name);
      break;
  }
}
function getImageType($src_img_name)
{
  $ext = substr($src_img_name, strlen($src_img_name) - 3, 3);
  $ext = strtolower($ext);
  if($ext == 'jpg'){
    return IMG_JPEG;
  }
  else if($ext == 'gif'){
    return IMG_GIF;
  }
  else if($ext == 'png'){
    return IMG_PNG;
  }
  else{
    return null;
  }
}

function convert_image($src_img_name, $dest_img_type)
{
  if(($type = getImageType($src_img_name)) == null){
    echo("Nieznany format pliku!");
    return false;
  }
  if($type == $dest_img_type){
    echo("Format źródłowy musi być różny od docelowego!");
    return false;
  }

  if(!($img = getImage($src_img_name, $type))){
    echo("Nie mogę otworzyć pliku: $src_img_name");
    return false;
  }
  saveImage($img, $src_img_name, $dest_img_type);
}

if($argc != 3){
  echo("Wywołanie skryptu: skrypt.php nazwa_obrazu.jpg format_docelowy\n");
  echo("format docelowy: IMG_JPG|IMG_PNG|IMG_GIF");
  exit;
}
switch($argv[2]){
  case "IMG_JPG" : $format = IMG_JPG;break;
  case "IMG_PNG" : $format = IMG_PNG;break;
  case "IMG_GIF" : $format = IMG_GIF;break;
  default : echo("Nieznany format docelowy.");exit;
}

convert_image($argv[1], $format);
?>
