IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Změna velikosti obrázku

Aktivity
Avatar
tomgerzicak
Člen
Avatar
tomgerzicak:4.2.2017 11:27

Dobrý den, potřeboval bych napsat funkci na změnu velikosti obrázku. Něco jako

function resizeToHeight ($cesta_k_obrazku, $vyska)

nebo

function resizeToWidth ($cesta_k_obrazku, $sirka)

a funkce by zrovna uložila obrázek v dané velikosti.
Má už s tím prosím někdo nějaké zkušenosti. Děkuji :D

 
Odpovědět
4.2.2017 11:27
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:4.2.2017 13:27

Ahoj, uz roky pouzivam do PHP knihovnu "wideimage ":http://wideimage.sourceforge.net/ a muzu jen doporucit. Ma funkci resize, kde staci jeden z parametru zadat null a dopocita se podle pomeru.

 
Nahoru Odpovědět
4.2.2017 13:27
Avatar
tomgerzicak
Člen
Avatar
Odpovídá na Jiří Fencl
tomgerzicak:4.2.2017 19:50

Děkuji, pořád si tak pohrávám s myšlenkou, jestli by to nešlo udělat v čistém php :P , nevěděl by někdo, prosím, jak na to? :D

 
Nahoru Odpovědět
4.2.2017 19:50
Avatar
tomgerzicak
Člen
Avatar
Odpovídá na Neaktivní uživatel
tomgerzicak:4.2.2017 23:10

Jo tuhle funkci jsem zkoušel, ale nějak mi nefunguje, ještě to pořeším. Děkuji za pomoc :D

 
Nahoru Odpovědět
4.2.2017 23:10
Avatar
vlam
Člen
Avatar
vlam:5.2.2017 16:14

V jedné své historické webové aplikaci používám tuto knihovničku (odkaz na zdroj už nefunguje):

/*
* File: simage.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 08/11/06
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/

class simage {

   var $image;
   var $image_type;

   function load($filename) {
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image);
      }
   }
   function getWidth() {
      return imagesx($this->image);
   }
   function getHeight() {
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getHeight() * $ratio;
      $this->resize($width,$height);
   }
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getHeight() * $scale/100;
      $this->resize($width,$height);
   }
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }
}

Příklad implementace po Uploadu:

$image = new simage();
$tfoto = $_FILES['fotka']['tmp_name'][$key];
$image->load($tfoto);
$dfoto = $_FILES['fotka']['name'][$key];
$dfile = $dest."/".$user."--".$dfoto;
if ($image->getWidth()>$maxw){
    $image->resizeToWidth($maxw);
} else {
    if ($image->getHeight()>$maxw){
        $image->resizeToHeight($maxw);}
}
$image->save($dfile);
Editováno 5.2.2017 16:16
Nahoru Odpovědět
5.2.2017 16:14
Do demence ještě stále daleko.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.