Zadejte hledaný výraz...

Převod png obrázku

Petr
verified
rating uzivatele
(132 hodnocení)
11. 1. 2010 21:48:40
Zdravím, máme menší problém a nikdo s tím nemůže hnout.
Problém spočívá, obyčejný php skript nám mění automaticky velikosti obrázku, jelikož stejný obrázek používáme na více místech jsou u něho jiná pozadí. A to je ten problém tento skriptík neumí zmenšit png soubor s průhledným pozadím, sice ho zmenší, ale pozadí je černé.
Řesil tohle už někdo ? Předem díky za odpověď.
Kód skriptu
include ("config.php");
$q = mysql_query ("SELECT img FROM vyhry WHERE id=" . (int)$_GET );
if (mysql_num_rows($q) == 0) die("0");
$img = mysql_fetch_array ($q); $img = $img;
resizeimage ($img, "" ,110);
function resizeImage($source, $destination = NULL,$wdt, $height = NULL){
if(empty($height)){
// Height is nit set so we are keeping the same aspect ratio.
list($width, $height) = getimagesize($source);
if($width > $height){
$w = $wdt;
$h = ($height / $width) * $w;
$w = $w;
}else{
$w = $wdt;
$h = $w;
$w = ($width / $height) * $w;
}
}else{
// Both width and Height are set.
// this will reshape to the new sizes.
$w = $wdt;
$h = $height;
}
$source_image = @file_get_contents($source) or die('Could not open'.$source);
$source_image = @imagecreatefromstring($source_image) or die($source.' is not a valid image');
$sw = imagesx($source_image);
$sh = imagesy($source_image);
$ar = $sw/$sh;
$tar = $w/$h;
if($ar >= $tar){
$x1 = round(($sw - ($sw * ($tar/$ar)))/2);
$x2 = round($sw * ($tar/$ar));
$y1 = 0;
$y2 = $sh;
}else{
$x1 = 0;
$y1 = 0;
$x2 = $sw;
$y2 = round($sw/$tar);
}
$slate = @imagecreatetruecolor($w, $h) or die('Invalid thumbnail dimmensions');
imagecopyresampled($slate, $source_image, 0, 0, $x1, $y1, $w, $h, $x2, $y2);
// If $destination is not set this will output the raw image to the browser and not save the file
if(!$destination) header('Content-type: image/jpeg');
@imagejpeg($slate, $destination, 75) or die('Directory permission problem');
ImageDestroy($slate);
ImageDestroy($source_image);
if(!$destination) exit;
return true;
}
?>
11. 1. 2010 21:48:40
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437086
Co na to Google?
http://www.google.cz/search?hl=cs&num=100&q=php+resize+PNG+with+alpha&btnG=Hledat&lr=&aq=f&oq=
11. 1. 2010 21:56:35
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437085
Petr
verified
rating uzivatele
(132 hodnocení)
11. 1. 2010 22:52:40
Ok Google je fajn, ale ani tak mi to nejde zakomponovat do toho skriptu, nabízím reputaci :)
11. 1. 2010 22:52:40
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437084
Roman
verified
rating uzivatele
(2 hodnocení)
11. 1. 2010 23:34:59
header('Content-type: image/jpeg');
@imagejpeg
minimalne hlavicku a fci si prepis na png ;) Ted jdu spat, zitra na to mozna mrknu
11. 1. 2010 23:34:59
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437083
Petr
verified
rating uzivatele
(132 hodnocení)
11. 1. 2010 23:42:37
Ok díky.
11. 1. 2010 23:42:37
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437082
organizerR
verified
rating uzivatele
11. 1. 2010 23:45:48
co tohle ->
http://mediumexposure.com/techblog/smart-image-resizing-while-preserving-transparency-php-and-gd-library
?
11. 1. 2010 23:45:48
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437081
Napsal back1;433013
Ok Google je fajn, ale ani tak mi to nejde zakomponovat do toho skriptu, nabízím reputaci :)
Té už mám dost, ale díky ;) Držím palce...
12. 1. 2010 11:23:53
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437080
Koukni na Nette Image http://github.com/dg/nette
12. 1. 2010 12:05:24
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437079
Petr
verified
rating uzivatele
(132 hodnocení)
12. 1. 2010 15:55:34
Všem díky za odkazi, najde se už nějaká dobrá duše, která by to implementovala do skriptu v mém prvním příspěvku ? Díky
---------- Doplňující příspěvek odeslán v 13:14 ----------
Nikdo netuší ? Já jsem taky v koncích...
12. 1. 2010 15:55:34
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437078
Petr Vacek
verified
rating uzivatele
13. 1. 2010 22:18:15
Tak nejdřív je třeba si uvědomit, že jpeg, do ktrerého exportuješ soubor, neumí alfakanál. To znamená, že nezvládá průhlednost. S tímhle nic neuděláš ani kdyby ses rozkrájel. Ale můžeš výsledný obrázek exportovat do png a potom by se měla průhlednost zachovat.
13. 1. 2010 22:18:15
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437077
Petr
verified
rating uzivatele
(132 hodnocení)
13. 1. 2010 22:22:07
Ok, vůbec nevím o čem je řeč, obrázky budou klidně v png to není problém i průhledné, ale přesto pozadí je černé.
13. 1. 2010 22:22:07
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437076
Petr Vacek
verified
rating uzivatele
14. 1. 2010 00:44:48
Tenhle kod, co tu máš, tak na vstupu ho můžeš krmit libovolnými obrázky (png, jpg,gif,..) ale na výstupu máš vždycky JPEG a ten neumí průhlednost, proto místo průhlednosti tam šoupne černou, protože nějakou barvu tam prostě musí dát. Takže řešením je změnit:
@imagejpeg($slate, $destination, 75) or die('Directory permission problem');
na
@imagepng($slate, $destination, 75) or die('Directory permission problem');
a potom header('Content-type: image/jpeg'); na header('Content-type: image/png');
pak by to mohlo fungovat i s průhledností. Potom tento kod ti bude vždycky vracet obrázky ve formátu PNG
14. 1. 2010 00:44:48
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437075
Petr
verified
rating uzivatele
(132 hodnocení)
14. 1. 2010 00:51:44
Díky za radu, bohužel ani toto nefunguje a černé pozadí je stále.
14. 1. 2010 00:51:44
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437074
Petr Vacek
verified
rating uzivatele
14. 1. 2010 00:56:56
ještě zkus za $slate = @imagecreatetruecolor($w, $h) or die('Invalid thumbnail dimmensions');
napsat imagesavealpha( $slate, true );
14. 1. 2010 00:56:56
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437073
Petr
verified
rating uzivatele
(132 hodnocení)
14. 1. 2010 00:59:06
Pořád black... je to divné.
14. 1. 2010 00:59:06
https://webtrh.cz/diskuse/prevod-png-obrazku#reply437072
Pro odpověď se přihlašte.
Přihlásit