| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- define("MAXSIZE", 460);
- class Flammenkuchen
- {
- private $title;
- private $descr;
- private $img;
- private function __construct()
- { }
- public static function fromForm($title, $desc)
- {
- $result = new Flammenkuchen();
- $result->title = htmlentities($title);
- $result->descr = htmlentities($desc);
- $result->img = null;
- return $result;
- }
- public static function fromJson($data)
- {
- $result = new Flammenkuchen();
- $result->title = $data->title;
- $result->descr = $data->desc;
- $result->img = imagecreatefromstring(base64_decode($data->img));
- return $result;
- }
- public function toJson()
- {
- ob_start();
- imagejpeg($this->img);
- $imageEncoded = base64_encode(ob_get_clean());
- return json_encode(array(
- "title" => $this->title
- ,"desc" => $this->descr
- ,"img" => $imageEncoded
- ));
- }
- public function getTitle()
- {
- return $this->title;
- }
- public function getDescription()
- {
- return $this->descr;
- }
- public function getImageJpeg()
- {
- return $this->img;
- }
- public function imageMd5()
- {
- ob_start();
- imagejpeg($this->img);
- return md5(base64_encode(ob_get_clean()));
- }
- public function createImage($type, $tmpFile)
- {
- $supported_files = array("image/png", "image/jpg", "image/jpeg");
- if (!in_array($type, $supported_files))
- return "Invalid file format: ".$type;
- $imageSize = getimagesize($tmpFile);
- if ($imageSize[0] > MAXSIZE || $imageSize[1] > MAXSIZE)
- {
- $newSize = array(-1, -1);
- if ($imageSize[0] > $imageSize[1])
- $newSize = array(MAXSIZE, $imageSize[1] * MAXSIZE / $imageSize[0]);
- else
- $newSize = array($imageSize[0] * MAXSIZE / $imageSize[1], MAXSIZE);
- $imgOrigin = $this->createImageFromType($type, $tmpFile);
- if ($imgOrigin === false)
- return "Error reading input file";
- $this->img = imagecreatetruecolor($newSize[0], $newSize[1]);
- imagecopyresampled(
- $this->img, $imgOrigin, // image ressources
- 0, 0, 0, 0, // Start coordinates
- $newSize[0], $newSize[1], // new file size
- $imageSize[0], $imageSize[1]); // actual origin size
- if ($this->img === false)
- return "Error resizing image";
- }
- else
- $this->img = $this->createImageFromType($type, $tmpFile);
- return true;
- }
- private function createImageFromType($type, $tmpFile)
- {
- if ($type == "image/png")
- return imagecreatefrompng($tmpFile);
- else if ($type == "image/jpg" || $type == "image/jpeg")
- return imagecreatefromjpeg($tmpFile);
- return false;
- }
- }
|