Zadejte hledaný výraz...

Zmenšení obrázku na určitou velikost

PajaS
verified
rating uzivatele
(15 hodnocení)
25. 2. 2009 21:31:39
Dělám teď jeden upload script a potřeboval bych vědět, jestli (a případně jak), a případně jak, je možné změnit velikost obrázku pomocí GD knihovny třeba na 100kB (i kdyby se rozměry měli mezi obrázky lišit. Jde mi o to, že uživatel bude nahrávat přímo fotku o velikosti několik MB a velkém rozlišení, a aby to script převedl na fotku o velikosti 100kB. Vytvoření miniatury už mám hotové, teď změna rozměru...
25. 2. 2009 21:31:39
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245245
naniccz
verified
rating uzivatele
(3 hodnocení)
25. 2. 2009 21:37:44
Vytvoření menšího obrázku je i tvorba miniatury - takže už to máš hotové.
(a technická, několik MB obrázek PHP asi na běžném hostingu neotevřeš - tak od 3Mpix bývají problémy s pamětí (klasicky 8MB))
25. 2. 2009 21:37:44
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245244
Napsal PajaS;224133
Dělám teď jeden upload script a potřeboval bych vědět, jestli (a případně jak), a případně jak, je možné změnit velikost obrázku pomocí GD knihovny třeba na 100kB (i kdyby se rozměry měli mezi obrázky lišit. Jde mi o to, že uživatel bude nahrávat přímo fotku o velikosti několik MB a velkém rozlišení, a aby to script převedl na fotku o velikosti 100kB. Vytvoření miniatury už mám hotové, teď změna rozměru...
Toto bohužel běžně nejde...
25. 2. 2009 22:12:53
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245243
Honzaa
verified
rating uzivatele
25. 2. 2009 22:49:04
Napsal Dominik;224169
Toto bohužel běžně nejde...
Jde, psal jsem si vlastní script a fungoval i u 5 Mbyte velkých fotek. Script nepočítá datovou velikost, ale zmenší fotky na přibližný rozměr, kdy jedna ze stran není větší např. než 400 px. Obrázek o rozměru 400 x 300 px nikdy nemá větší velikost než těch 100 kB.
25. 2. 2009 22:49:04
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245242
divamys
verified
rating uzivatele
25. 2. 2009 22:49:57
Nemyslim ze GD nieco taketo vie....
Navrhol by som Ti taketo nieco:
1) zmensil by som img na konkretny rozmer X x Y
2) zistil by som aka je jeho velkost v KB po zmenseni
3) ak presahuje 100KB, zmensil by som ho povedzme o dalsich 5px a opat zistil jeho velkost... atd. az kym nie je mensi ako 100KB
kazdpoadne nepekne riesenie, ale jedine co ma napada.
25. 2. 2009 22:49:57
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245241
Napsal Honzaa;224201
Jde, psal jsem si vlastní script a fungoval i u 5 Mbyte velkých fotek. Script nepočítá datovou velikost, ale zmenší fotky na přibližný rozměr, kdy jedna ze stran není větší např. než 400 px. Obrázek o rozměru 400 x 300 px nikdy nemá větší velikost než těch 100 kB.
To by mě zajímalo, já vždy narazil na limit paměti pro PHP.
25. 2. 2009 23:45:59
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245240
Honzaa
verified
rating uzivatele
26. 2. 2009 06:20:50
Napsal Dominik;224240
To by mě zajímalo, já vždy narazil na limit paměti pro PHP.
mám to na webhostingu. Museli mi na tom hostingu přidělit vlastní /temp adesář. Jednalo se o nahrávání fotek k inzerátům aut. Dokáže to zmenšit fotku a ještě udělat malý náhled.
26. 2. 2009 06:20:50
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245239
Napsal Honzaa;224288
mám to na webhostingu. Museli mi na tom hostingu přidělit vlastní /temp adesář. Jednalo se o nahrávání fotek k inzerátům aut. Dokáže to zmenšit fotku a ještě udělat malý náhled.
Rozumim, ale stejne to musi GD nacist do pameti a te je malo, ne?
26. 2. 2009 08:20:34
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245238
Honzaa
verified
rating uzivatele
26. 2. 2009 18:05:34
Napsal Dominik;224305
Rozumim, ale stejne to musi GD nacist do pameti a te je malo, ne?
Důležité je to, že to funguje. Je to podle php.net dokumentace. Stačí číst.
26. 2. 2009 18:05:34
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245237
Napsal Honzaa;224776
Důležité je to, že to funguje. Je to podle php.net dokumentace. Stačí číst.
Ty jsi tajemnej :-) jdu hledat.
26. 2. 2009 18:38:16
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245236
_Pida_
verified
rating uzivatele
27. 2. 2009 14:54:17
Tady se neřeší zda to GD zvládne :-D GD nebere ohled na to jak je velký obrázek, GD je knihovna pouze... Velikost uploadovaného souboru omezuje nastavení v php.ini ;-) zejména post_max_size a max_file_size :-) Viz phpinfo() ...
Mám komunitní portál, kde mohou uživatelé uploadovat fotky třeba i s velikostí 10 MB, ale GD to umí zmenšit na fotku pod 100kb s přehledem, protože u funckí se dá nastavit i kvalita rozlišení, barevná hloubka atd. a to vše ovlivňuje velikost výsledného souboru.
27. 2. 2009 14:54:17
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245235
Napsal _Pida_;225515
Tady se neřeší zda to GD zvládne :-D GD nebere ohled na to jak je velký obrázek, GD je knihovna pouze... Velikost uploadovaného souboru omezuje nastavení v php.ini ;-) zejména post_max_size a max_file_size :-) Viz phpinfo() ...
Mám komunitní portál, kde mohou uživatelé uploadovat fotky třeba i s velikostí 10 MB, ale GD to umí zmenšit na fotku pod 100kb s přehledem, protože u funckí se dá nastavit i kvalita rozlišení, barevná hloubka atd. a to vše ovlivňuje velikost výsledného souboru.
A jakou funkcí to zmenšuješ?
Asi tou, co já, jen máš větší prostor na webhostingu. Ten já nedostal.
27. 2. 2009 15:25:54
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245234
_Pida_
verified
rating uzivatele
27. 2. 2009 16:48:30
Dominik:
Ahoj, hele tak já sem večer hodím ten skript až budu doma na mém PC ;)
Edit: Jinak hosting mám de-facto 10 GB, ale vše programuji doma na Linuxu na PC, kde mám omezení prostor jen volným místem na disku :-)
27. 2. 2009 16:48:30
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245233
Honzaa
verified
rating uzivatele
27. 2. 2009 19:53:19
Napsal Dominik;224824
Ty jsi tajemnej :-) jdu hledat.
Nenašel jsi ? Prozradím tedy něco z mé kuchyně.
function nahrat($sir,$vys,$soub,$dest) {
// Set a maximum height and width
$width = $sir;
$height = $vys;
// Get new dimensions
list($width_orig, $height_orig,$type,$attr) = getimagesize($soub);
if ($type == 2) {
$sirka=$width/$width_orig;
if ($sirka<1) {
$height=$sirka*$height_orig;
} else {
$height=$height_orig;
$width=$width_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($soub);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagejpeg($image_p,$dest, 75);
}
if ($type == 1) {
$sirka=$width/$width_orig;
if ($sirka<1) {
$height=$sirka*$height_orig;
} else {
$height=$height_orig;
$width=$width_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromgif($soub);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagegif($image_p,$dest);
}
}
$link = mysql_connect("host","user","password");
mysql_select_db("database",$link);
$test=0;
$obrname=$_FILES;
$obr=$_FILES;
$obrtype=$_FILES;
switch (strtolower ($obrtype)) {
case "image/jpg":
$pripona="jpg";
$test=1;
break;
case "image/pjpeg":
$pripona="jpg";
$test=1;
break;
case "image/jpeg":
$pripona="jpg";
$test=1;
break;
case "image/gif":
$pripona="gif";
$test=1;
break;
case "image/png":
$pripona="png";
$test=1;
}
if ($obrname != "") {
if ($test == 1) {
$obrname="";
mysql_query("update counter set images=images+1 where code=1;",$link);
$rs="select images from counter where code=1;";
$reading=mysql_query($rs,$link);
while ($row=mysql_fetch_assoc($reading)) {
$obrname="image".$row.".".$pripona;
}
if ($obr > 1000) {
if (is_uploaded_file($_FILES)) {
copy($_FILES, "imagetemp/".$obrname);
nahrat(400,400,"imagetemp/".$obrname,"image/".$obrname);
nahrat(128,128,"imagetemp/".$obrname,"wap/image/".$obrname);
unlink("imagetemp/".$obrname);
} else {
echo "Upload se nezdařil. Název souboru: " . $_FILES."
";
}
$message="";
} else {
$message="Fotka č.1 má velmi malý rozměr a proto nebyla uložena.
";
$obrname="";
}
} else {
$message="";
$soubor="Fotka č.1 má neznámou koncovku, proto se neuložila.
";
}
}
?>
27. 2. 2009 19:53:19
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245232
Díky!!! To jsem hledal. Ale na $image = imagecreatefromjpeg($soub);
mi to zdechne na nedostatek paměti :-(
Napsal Honzaa;225782
Nenašel jsi ? Prozradím tedy něco z mé kuchyně.
function nahrat($sir,$vys,$soub,$dest) {
// Set a maximum height and width
$width = $sir;
$height = $vys;
// Get new dimensions
list($width_orig, $height_orig,$type,$attr) = getimagesize($soub);
if ($type == 2) {
$sirka=$width/$width_orig;
if ($sirka<1) {
$height=$sirka*$height_orig;
} else {
$height=$height_orig;
$width=$width_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($soub);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagejpeg($image_p,$dest, 75);
}
if ($type == 1) {
$sirka=$width/$width_orig;
if ($sirka<1) {
$height=$sirka*$height_orig;
} else {
$height=$height_orig;
$width=$width_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromgif($soub);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagegif($image_p,$dest);
}
}
$link = mysql_connect("host","user","password");
mysql_select_db("database",$link);
$test=0;
$obrname=$_FILES;
$obr=$_FILES;
$obrtype=$_FILES;
switch (strtolower ($obrtype)) {
case "image/jpg":
$pripona="jpg";
$test=1;
break;
case "image/pjpeg":
$pripona="jpg";
$test=1;
break;
case "image/jpeg":
$pripona="jpg";
$test=1;
break;
case "image/gif":
$pripona="gif";
$test=1;
break;
case "image/png":
$pripona="png";
$test=1;
}
if ($obrname != "") {
if ($test == 1) {
$obrname="";
mysql_query("update counter set images=images+1 where code=1;",$link);
$rs="select images from counter where code=1;";
$reading=mysql_query($rs,$link);
while ($row=mysql_fetch_assoc($reading)) {
$obrname="image".$row.".".$pripona;
}
if ($obr > 1000) {
if (is_uploaded_file($_FILES)) {
copy($_FILES, "imagetemp/".$obrname);
nahrat(400,400,"imagetemp/".$obrname,"image/".$obrname);
nahrat(128,128,"imagetemp/".$obrname,"wap/image/".$obrname);
unlink("imagetemp/".$obrname);
} else {
echo "Upload se nezdařil. Název souboru: " . $_FILES."
";
}
$message="";
} else {
$message="Fotka č.1 má velmi malý rozměr a proto nebyla uložena.
";
$obrname="";
}
} else {
$message="";
$soubor="Fotka č.1 má neznámou koncovku, proto se neuložila.
";
}
}
?>
27. 2. 2009 21:04:20
https://webtrh.cz/diskuse/zmenseni-obrazku-na-urcitou-velikost#reply245231
Pro odpověď se přihlašte.
Přihlásit