Autor Zpráva
youfou
Profil
Dobrý den,

mám tu menší problém, kod funguje jak má bez všech chyb jsem spokojený. Jen chci k tomuto dodělat i že se mi vytvoří miniaura a nahraje se do ../neco.cz/img/clanky/maly/ . Ta miniutura bude mít pevné rozměry vždy, takže žádne dopočitavaní. Ví někdo jak na to ? Budu rád za každou pomoc :)

<?php

if (isset($_FILES['image'])) {
    $file_name = $_FILES['image']['name'];
    $file_size = $_FILES['image']['size'];
    $file_tmp = $_FILES['image']['tmp_name'];
    $file_type = $_FILES['image']['type'];
    $exploded = explode('.', $_FILES['image']['name']);
    $file_ext = strtolower(end($exploded));

    $expensions = array("jpeg", "jpg", "png");

    if (in_array($file_ext, $expensions) === false) {
        $errors[] = "chybný formát souboru. Zvolte JPEG nebo PNG soubor.";
    }

    if ($file_size > 3145728) {
        $errors[] = 'Maximální velikost souboru je 3 MB';
    }

    if (empty($errors) == true) {
        move_uploaded_file($file_tmp, "../neco.cz/img/clanky/velky/" . $file_name);
    }
}
Keeehi
Profil
Nejdůležitější ke funkce imagecopyresampled. To je to, co provádí to samotné zmenšení. Vše ostatní je už jen výpočty správných parametrů pro předání té funkci. Na odkázané stránce máš i nějaké příklady. Pokud bys chtěl něco pokročilejšího a pohodlnějšího, pak můžeš použít třeba třídu Nette\Utils\Image.
youfou
Profil
Zkusil jsem to použít. Ale někde jsem udělal chybičku a nemůžu opravdu přijít na to kde.


if (isset($_FILES['image'])) {
        $file_name = $_FILES['image']['name'];
        $file_size = $_FILES['image']['size'];
        $file_tmp = $_FILES['image']['tmp_name'];
        $file_type = $_FILES['image']['type'];
        $exploded = explode('.', $_FILES['image']['name']);
        $file_ext = strtolower(end($exploded));

        $expensions = array("jpeg", "jpg", "png");

        if (in_array($file_ext, $expensions) === false) {
            $errors[] = "chybný formát souboru. Zvolte JPEG nebo PNG soubor.";
        }

        if ($file_size > 3145728) {
            $errors[] = 'Maximální velikost souboru je 3 MB';
        }  

        if (empty($errors) == true) {
            move_uploaded_file($file_tmp, "../biorise.cz/img/clanky/velky/".$file_name);
            
            $image = imagecreatefrompng($_FILES['image']['tmp_name']);
            $width = imagesx($image);
            $height = imagesy($image);
            $nwidth = 600;
            $nheight = 600;
            $nimage = imagecreatetruecolor($nwidth, $nheight);
            imagecopyresampled($nimage, $image, 0, 0, 0, 0, $nwidth, $nheight, $width, $height);
            imagepng($nimage,"image.png");
            
            move_uploaded_file($nimage, "../biorise.cz/img/clanky/maly/".$file_name);
            }
            }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: