Пример #1
0
 public static function resize($path, $width, $height)
 {
     $new_image = imagecreatetruecolor($width, $height);
     $src = imagecreatefromjpeg($path);
     imagecopyresized($new_image, $src, 0, 0, 0, 0, $width, $height, imagesx($path), imagesy($path));
     imagejpg($new_image);
 }
Пример #2
0
 public function copy($filename, $targetDir, $maxY = false, $maxX = false)
 {
     if (!$maxY && !$maxX) {
         return false;
     }
     $file = open_image($this->image);
     if ($file) {
         $oldX = imagesx($file);
         $oldY = imagesy($file);
         $x = 0;
         $y = 0;
         $assumedY = $maxX * ($oldY / $oldX);
         $assumedX = $maxY * ($oldX / $oldY);
         if ($assumedX > $maxX) {
             $x = $maxX;
             $y = $assumedY;
         }
         if ($assumedY > $maxY) {
             $x = $assumedX;
             $y = $maxY;
         }
         $img = imagecreatetruecolor($x, $y);
         imagecopyresampled($img, $file, 0, 0, 0, 0, $x, $y, $oldX, $oldY);
         $destination = $targetDir . '/' . $filename;
         imagejpg($img, $destination, 60);
     }
     return true;
 }
Пример #3
0
function onlineresize($subor, $NovaSirka, $NovaVyska)
{
    $urli = getimagesize($subor);
    if ($urli["mime"] == "image/jpg") {
        $image = imagecreatefromjpg($subor);
    } elseif ($urli["mime"] == "image/png") {
        $image = imagecreatefrompng($subor);
    } elseif ($urli["mime"] == "image/gif") {
        $image = imagecreatefromgif($subor);
    } elseif ($urli["mime"] == "image/jpeg") {
        $image = imagecreatefromjpeg($subor);
    }
    $sirka = imagesx($image);
    $vyska = imagesy($image);
    if ($NovaVyska == 0) {
        $pomer = $sirka / $vyska;
        $NovaVyska = $NovaSirka / $pomer;
    } else {
        $NovaSirka = $NovaSirka;
        $NovaVyska = $NovaVyska;
    }
    $image_zmenseny = imagecreatetruecolor($NovaSirka, $NovaVyska);
    imagecopyresampled($image_zmenseny, $image, 0, 0, 0, 0, $NovaSirka, $NovaVyska, $sirka, $vyska);
    // Zobraz�me zmen�eninu
    if ($urli["mime"] == "image/jpg") {
        header('Content-type: image/jpg');
        imagejpg($image_zmenseny);
    } elseif ($urli["mime"] == "image/png") {
        header('Content-type: image/png');
        imagepng($image_zmenseny);
    } elseif ($urli["mime"] == "image/gif") {
        header('Content-type: image/gif');
        imagegif($image_zmenseny);
    } elseif ($urli["mime"] == "image/jpeg") {
        header('Content-type: image/jpeg');
        imagejpeg($image_zmenseny);
    }
}
Пример #4
0
     $im = imagecreatefrompng($file);
     header('Content-type: image/png');
     imagepng($im);
     imagedestroy($im);
     break;
 case "gif":
     $im = imagecreatefromgif($file);
     header('Content-type: image/gif');
     //imagegif($im);
     echo file_get_contents($image);
     imagedestroy($im);
     break;
 case "jpg":
     $im = imagecreatefromjpg($file);
     header('Content-type: image/jpg');
     imagejpg($im);
     imagedestroy($im);
     break;
 case "wmv":
     header('Content-type: video/x-ms-wmv');
     readfile($file);
     break;
 case "ogv":
     header('Content-type: video/ogg');
     readfile($file);
     break;
 case "ogg":
     header('Content-type: video/ogg');
     readfile($file);
     break;
 case "mp4":
Пример #5
0
} elseif ($urli["mime"] == "image/gif") {
    $myImage = imagecreatefromgif($imgSrc);
} elseif ($urli["mime"] == "image/jpeg") {
    $myImage = imagecreatefromjpeg($imgSrc);
}
if ($width > $height) {
    $y = 0;
    $x = ($width - $height) / 1000000000;
    $smallestSide = $height;
} else {
    $x = 0;
    $y = ($height - $width) / 1000000000;
    $smallestSide = $width;
}
$thumbSize = 700;
$thumbSize2 = 300;
$thumb = imagecreatetruecolor($thumbSize, $thumbSize2);
imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);
if ($urli["mime"] == "image/jpg") {
    header('Content-type: image/jpg');
    imagejpg($thumb);
} elseif ($urli["mime"] == "image/png") {
    header('Content-type: image/png');
    imagepng($thumb);
} elseif ($urli["mime"] == "image/gif") {
    header('Content-type: image/gif');
    imagegif($thumb);
} elseif ($urli["mime"] == "image/jpeg") {
    header('Content-type: image/jpeg');
    imagejpeg($thumb);
}
Пример #6
0
        }
    }
}
if ($errorText) {
    Error($errorText);
} else {
    if (($scale == 0 || $scale == 100) && $width == 0 && $height == 0) {
        readfile(ZM_DIR_EVENTS . '/' . $path);
    } else {
        $i = imagecreatefromjpeg(ZM_DIR_EVENTS . '/' . $path);
        $oldWidth = imagesx($i);
        $oldHeight = imagesy($i);
        if ($width == 0 && $height == 0) {
            $width = $oldWidth * $scale / 100.0;
            $height = $oldHeight * $scale / 100.0;
        } elseif ($width == 0 && $height != 0) {
            $width = $height * $oldWidth / $oldHeight;
        } elseif ($width != 0 && $height == 0) {
            $height = $width * $oldHeight / $oldWidth;
        }
        if ($width == $oldWidth && $height == $oldHeight) {
            imagejpg($i);
            imagedestroy($i);
        } else {
            $iScale = imagescale($i, $width, $height);
            imagejpeg($iScale);
            imagedestroy($i);
            imagedestroy($iScale);
        }
    }
}
Пример #7
0
function map_img($map_data, $filename = "", $player_data = "", $account = "", $filetype = "png")
{
    if ($account == "") {
        return False;
    }
    $cols = $map_data["cols"];
    $rows = $map_data["rows"];
    # make some kind of image library structure (maybe a class might be useful here)
    $buffer_terrain_ocean = imagecreatefrompng(PATH_IMAGES . IMAGE_TERRAIN_OCEAN);
    if ($buffer_terrain_ocean === False) {
        return False;
    }
    $buffer_terrain_land = imagecreatefrompng(PATH_IMAGES . IMAGE_TERRAIN_LAND);
    if ($buffer_terrain_land === False) {
        return False;
    }
    $unit_types = array("settler", "warrior");
    for ($i = 0; $i < count($unit_types); $i++) {
        $unit_buffers[$unit_types[$i]] = imagecreatefrompng(PATH_IMAGES . $unit_types[$i] . ".png");
        if ($unit_buffers[$unit_types[$i]] === False) {
            return False;
        }
    }
    $city_sizes = array("1");
    for ($i = 0; $i < count($city_sizes); $i++) {
        $city_buffers[$city_sizes[$i]] = imagecreatefrompng(PATH_IMAGES . "city" . $city_sizes[$i] . ".png");
        if ($city_buffers[$city_sizes[$i]] === False) {
            return False;
        }
    }
    $buffer_shield = imagecreatefrompng(PATH_IMAGES . IMAGE_SHIELD);
    if ($buffer_shield === False) {
        return False;
    }
    $buffer_city_flag = imagecreatefrompng(PATH_IMAGES . IMAGE_CITY_FLAG);
    if ($buffer_city_flag === False) {
        return False;
    }
    $tile_w = imagesx($buffer_terrain_ocean);
    $tile_h = imagesy($buffer_terrain_ocean);
    $unit_w = imagesx($unit_buffers[$unit_types[0]]);
    $unit_h = imagesy($unit_buffers[$unit_types[0]]);
    $city_w = imagesx($city_buffers[$city_sizes[0]]);
    $city_h = imagesy($city_buffers[$city_sizes[0]]);
    $w = $cols * $tile_w;
    $h = $rows * $tile_h;
    $buffer = imagecreatetruecolor($w, $h);
    for ($y = 0; $y < $rows; $y++) {
        for ($x = 0; $x < $cols; $x++) {
            $i = map_coord($cols, $x, $y);
            if ($player_data != "" and $account != "") {
                if ($player_data[$account]["fog"][$i] == "0") {
                    #continue;
                }
            }
            if ($map_data["coords"][$i] == TERRAIN_LAND) {
                if (imagecopy($buffer, $buffer_terrain_land, $x * $tile_w, $y * $tile_h, 0, 0, $tile_w, $tile_h) == False) {
                    return False;
                }
            }
            if ($map_data["coords"][$i] == TERRAIN_OCEAN) {
                if (imagecopy($buffer, $buffer_terrain_ocean, $x * $tile_w, $y * $tile_h, 0, 0, $tile_w, $tile_h) == False) {
                    return False;
                }
            }
        }
    }
    imagedestroy($buffer_terrain_ocean);
    imagedestroy($buffer_terrain_land);
    if ($player_data != "" and $account != "") {
        if (isset($player_data[$account]["flags"]["grid"]) == True) {
            $color_grid = imagecolorallocate($buffer, 0, 0, 0);
            for ($x = 0; $x < $cols; $x++) {
                imageline($buffer, $x * $tile_w, 0, $x * $tile_w, $h, $color_grid);
            }
            for ($y = 0; $y < $rows; $y++) {
                imageline($buffer, 0, $y * $tile_h, $w, $y * $tile_h, $color_grid);
            }
        }
        if (isset($player_data[$account]["flags"]["coords"]) == True) {
            $color_text = imagecolorallocate($buffer, 0, 0, 0);
            $color_text_shadow = imagecolorallocate($buffer, 255, 255, 255);
            for ($y = 0; $y < $rows; $y++) {
                for ($x = 0; $x < $cols; $x++) {
                    $i = map_coord($cols, $x, $y);
                    if ($player_data[$account]["fog"][$i] == "0") {
                        continue;
                    }
                    imagestring($buffer, 1, $x * $tile_w + 1, $y * $tile_h, "{$x},{$y}", $color_text_shadow);
                    imagestring($buffer, 1, $x * $tile_w + 2, $y * $tile_h + 1, "{$x},{$y}", $color_text);
                }
            }
        }
        #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        if (isset($player_data[$account]["path"]) == True) {
            $path = $player_data[$account]["path"];
            $color_path = imagecolorallocate($buffer, 255, 0, 0);
            for ($i = 1; $i < count($path); $i++) {
                $p1x = round($path[$i - 1]["x"] * $tile_w + $tile_w / 2);
                $p1y = round($path[$i - 1]["y"] * $tile_h + $tile_h / 2);
                $p2x = round($path[$i]["x"] * $tile_w + $tile_w / 2);
                $p2y = round($path[$i]["y"] * $tile_h + $tile_h / 2);
                imageline($buffer, $p1x, $p1y, $p2x, $p2y, $color_path);
                $color_text = imagecolorallocate($buffer, 0, 0, 0);
                $color_text_shadow = imagecolorallocate($buffer, 255, 255, 255);
                #imagestring($buffer,1,$path[$i-1]["x"]*$tile_w+1,$path[$i-1]["y"]*$tile_h,$path[$i-1]["dir"],$color_text_shadow);
                #imagestring($buffer,1,$path[$i-1]["x"]*$tile_w+2,$path[$i-1]["y"]*$tile_h+1,$path[$i-1]["dir"],$color_text);
            }
        }
        #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        $color_transparent = imagecolorallocate($unit_buffers[$unit_types[0]], 255, 0, 255);
        for ($i = 0; $i < count($unit_types); $i++) {
            imagecolortransparent($unit_buffers[$unit_types[$i]], $color_transparent);
        }
        for ($i = 0; $i < count($city_sizes); $i++) {
            imagecolortransparent($city_buffers[$city_sizes[$i]], $color_transparent);
        }
        imagecolortransparent($buffer_shield, $color_transparent);
        imagecolortransparent($buffer_city_flag, $color_transparent);
        imagealphablending($buffer, True);
        imagesavealpha($buffer, True);
        $color_str_account = $player_data[$account]["color"];
        $show_city_names = False;
        if (isset($player_data[$account]["flags"]["city_names"]) == True) {
            $show_city_names = True;
        }
        for ($i = 0; $i < count($player_data[$account]["cities"]); $i++) {
            $city = $player_data[$account]["cities"][$i];
            map_paint_city($buffer, $city_buffers, $buffer_city_flag, $tile_w, $tile_h, $city_w, $city_h, $city, $color_str_account, $show_city_names);
        }
        foreach ($player_data as $player => $data) {
            if ($player == $account) {
                continue;
            }
            $color_str = $player_data[$player]["color"];
            $n = count($player_data[$player]["cities"]);
            for ($i = 0; $i < $n; $i++) {
                $city = $player_data[$player]["cities"][$i];
                $x = $city["x"];
                $y = $city["y"];
                if (is_fogged($account, $x, $y) == False) {
                    map_paint_city($buffer, $city_buffers, $buffer_city_flag, $tile_w, $tile_h, $city_w, $city_h, $city, $color_str, $show_city_names);
                }
            }
            $n = count($player_data[$player]["units"]);
            for ($i = 0; $i < $n; $i++) {
                $unit = $player_data[$player]["units"][$i];
                $x = $unit["x"];
                $y = $unit["y"];
                if (is_fogged($account, $x, $y) == False) {
                    map_paint_unit($buffer, $unit_buffers, $buffer_shield, $tile_w, $tile_h, $unit_w, $unit_h, $unit, $color_str);
                }
            }
        }
        for ($i = 0; $i < count($player_data[$account]["units"]); $i++) {
            $unit = $player_data[$account]["units"][$i];
            map_paint_unit($buffer, $unit_buffers, $buffer_shield, $tile_w, $tile_h, $unit_w, $unit_h, $unit, $color_str_account);
        }
    }
    imagedestroy($buffer_shield);
    imagedestroy($buffer_city_flag);
    for ($i = 0; $i < count($unit_types); $i++) {
        imagedestroy($unit_buffers[$unit_types[$i]]);
    }
    for ($i = 0; $i < count($city_sizes); $i++) {
        imagedestroy($city_buffers[$city_sizes[$i]]);
    }
    # to make final map image smaller filesize, use createimage to create palleted image, then copy truecolor image to palleted image
    $scale = 1.0;
    $final_w = round($w * $scale);
    $final_h = round($h * $scale);
    $buffer_resized = imagecreatetruecolor($final_w, $final_h);
    if (imagecopyresampled($buffer_resized, $buffer, 0, 0, 0, 0, $final_w, $final_h, $w, $h) == False) {
        irciv_term_echo("imagecopyresampled error");
        return False;
    }
    imagedestroy($buffer);
    $buffer = imagecreate($final_w, $final_h);
    if (imagecopy($buffer, $buffer_resized, 0, 0, 0, 0, $final_w, $final_h) == False) {
        irciv_term_echo("imagecopy error");
        return False;
    }
    imagedestroy($buffer_resized);
    unset($buffer_resized);
    /*if (isset($player_data[$account]["flags"]["crop_map"])==True)
      {
        $fog_boundary_l=$cols;
        $fog_boundary_t=$rows;
        $fog_boundary_r=0;
        $fog_boundary_b=0;
        for ($y=0;$y<$rows;$y++)
        {
          for ($x=0;$x<$cols;$x++)
          {
            $coord=map_coord($cols,$x,$y);
            if ($player_data[$account]["fog"][$coord]=="1")
            {
              if ($x<$fog_boundary_l)
              {
                $fog_boundary_l=$x;
              }
              if ($x>$fog_boundary_r)
              {
                $fog_boundary_r=$x;
              }
              if ($y<$fog_boundary_t)
              {
                $fog_boundary_t=$y;
              }
              if ($y>$fog_boundary_b)
              {
                $fog_boundary_b=$y;
              }
            }
          }
        }
        $fog_boundary_l=max(0,$fog_boundary_l-1);
        $fog_boundary_t=max(0,$fog_boundary_t-1);
        $fog_boundary_r=min($cols,$fog_boundary_r+2);
        $fog_boundary_b=min($rows,$fog_boundary_b+2);
        irciv_term_echo("IRCiv >> map_img: fog_boundary_l = $fog_boundary_l");
        irciv_term_echo("IRCiv >> map_img: fog_boundary_t = $fog_boundary_t");
        irciv_term_echo("IRCiv >> map_img: fog_boundary_r = $fog_boundary_r");
        irciv_term_echo("IRCiv >> map_img: fog_boundary_b = $fog_boundary_b");
        if (($fog_boundary_l<$fog_boundary_r) and ($fog_boundary_t<$fog_boundary_b))
        {
          $range_x=$fog_boundary_r-$fog_boundary_l;
          $range_y=$fog_boundary_b-$fog_boundary_t;
          irciv_term_echo("IRCiv >> map_img: range_x = $range_x");
          irciv_term_echo("IRCiv >> map_img: range_y = $range_y");
          $w=$range_x*$tile_w;
          $h=$range_y*$tile_h;
          $buffer_resized=imagecreatetruecolor($w,$h);
          if (imagecopy($buffer_resized,$buffer,0,0,$fog_boundary_l*$tile_w,$fog_boundary_t*$tile_h,$w,$h)==False)
          {
            irciv_term_echo("imagecopy error");
            return False;
          }
          imagedestroy($buffer);
          $buffer=imagecreate($w,$h);
          if (imagecopy($buffer,$buffer_resized,0,0,0,0,$w,$h)==False)
          {
            irciv_term_echo("imagecopy error");
            return False;
          }
          imagedestroy($buffer_resized);
          unset($buffer_resized);
        }
      }*/
    if ($filename != "") {
        switch ($filetype) {
            case "gif":
                imagegif($buffer, $filename . ".gif");
                break;
            case "png":
                imagepng($buffer, $filename . ".png");
                break;
            case "jpg":
                imagejpg($buffer, $filename . ".jpg");
                break;
        }
        imagedestroy($buffer);
    } else {
        ob_start();
        switch ($filetype) {
            case "gif":
                imagegif($buffer);
                break;
            case "png":
                imagepng($buffer);
                break;
            case "jpg":
                imagejpg($buffer);
                break;
        }
        $data = ob_get_contents();
        ob_end_clean();
        imagedestroy($buffer);
        return $data;
    }
}