Autor | Zpráva | ||
---|---|---|---|
Prkny Profil |
#1 · Zasláno: 19. 3. 2017, 12:05:35
Používám lehce upravenou verzi funkce pro zmenšení obrázku od Jakuba Vrány. ( Moved Permanently)
Pokud zmenšuji produktový obrázek s bílým pozadím (jpg), tak u zmenšeného obrázku se na bílé ploše objeví šedý šum v podobně světle-šedých svislých pruhů. Nevíte kde by mohl být problém? function image_resize($file_in, $file_out, $width, $height, $kvalita) { if ($kvalita == ""){$kvalita = 75;} $imagesize = getimagesize($file_in); if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) { return false; } if ($imagesize[0] == $width && $imagesize[1] == $height) { return copy($file_in, $file_out); } switch ($imagesize[2]) { case 1: $img = imagecreatefromgif($file_in); break; case 2: $img = imagecreatefromjpeg($file_in); break; case 3: $img = imagecreatefrompng($file_in); break; default: return false; } if (!$img) { return false; } $img2 = imagecreatetruecolor($width, $height); imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]); if ($imagesize[2] == 2) { return imagejpeg($img2, $file_out, $kvalita); } elseif ($imagesize[2] == 1 && function_exists("imagegif")) { imagetruecolortopalette($img2, false, 256); return imagegif($img2, $file_out); } else { return imagepng($img2, $file_out); } } |
||
Davex Profil |
To je vlastnost knihovny GD. Popsaná tu Resize Artifact.
1) Pokud používáš PHP 5.5 a novější, tak funkci imagecopyresampled nahraď za imagescale , jak je tam popsáno.
2) Pro starší verze PHP by mělo stačit zmenšovat negativ (viz PHP Bug #41820). imagefilter($img, IMG_FILTER_NEGATE); imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]); imagefilter($img2, IMG_FILTER_NEGATE); |
||
Prkny Profil |
#3 · Zasláno: 20. 3. 2017, 11:02:28
Davex:
Velice děkuji za odpověď. Řešení funguje dokonale. |
||
Časová prodleva: 6 let
|
0