Autor Zpráva
Prkny
Profil
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
Davex:
Velice děkuji za odpověď. Řešení funguje dokonale.

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: