Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komprejsa zdjęć w PHP
Forum PHP.pl > Forum > PHP
waterwall
Chciałbym zmniejszyć kompresję zapisu zdjęć w php.
Z góry dziękuje za pomoc
spenalzo
Chodzi o JPEG?
Jeżeli tak to:
[php:1:2869674adf]<?php
$img=imagecreatefromjpeg("plik.jpg");
$kompresja=50;
/* wartość zmiennej kompresja można określać w zakresie od 0 do 100, gdzie 0 to najniższa a 100 to najwyższa jakość */
imagejpeg($img, "plik2.jpg", $kompresja);
?>[/php:1:2869674adf]
Powinno działać.
Józek
A ja wpisuję wartość kompresji na 100 i mimo to obrazek wygląda prawie jak gif. Tylko w miejscu nazwy pliku piszę null albo ' ' , czyli pusto bo nie zapisuję obrazka tylko wysyłam go od razu do przeglądarki.
Skrypt zmienia jednocześnie rozmiar obrazka. Wszystko działa pięknie z wyjątkiem tej kompresji. Jaką wartość nie wpisze zdjęcie wygląda tak samo beznadziejnie.
Co jeszcze można sprawdzić?
MaKaO
Zobacz to, napisałem na szybko...
[php:1:f32fb686ff]<?
if(!$quality) {$quality=100;}
if($folder=="") {
$file="$photo";
} else {
$file="$folder/$photo";
}
$srcImg = ImageCreateFromJpeg("$file");
$orginalWidth = ImageSX($srcImg);
$orginalHeight = ImageSY($srcImg);


if (!$width)
{
$newWidth=$orginalWidth;
$newHeight=$orginalHeight;
}
else
{
$org = ($width*100)/$orginalWidth;
(int)$newWidth = ($orginalWidth*$org)/100;
(int)$newHeight = ($orginalHeight*$org)/100;
$newWidth = $newWidth-1;
$newHeight = $newHeight-1;
}

$dstImg=ImageCreate($newWidth, $newHeight);


ImageCopyResized($dstImg,$srcImg,0,0,0,0,$newWidth,$newHeight,ImageSX($srcImg),I
ageSY($srcImg));

header ("Content-type: image/jpeg");
ImageJpeg($dstImg, '', $quality);
?>
[/php:1:f32fb686ff]
Zdjęcie wstaw tak...
Kod
<a href=katalog/zdjecie.jpg target=_blank><img border=0 src=resize.php?quality=70&folder=tutaj_katalog&photo=tutaj_url_fotki&width=100>

Mam nadzieje że o to chodziło...
Józek
No, niezupełnie o to. Ale dzięki za chęci. Mam podobny skrypcik. I problem w tym, że właśnie tak jak by nie słuchał, że ma zastosować taką a nie inną kompresję. Próbowałem na różne sposoby i nic.
Józek
Ręce mi opadają. Skrypt niby działa, zmienia wielkość w locie, ale coś nie tak z fotkami.
Niby jest to ?jpg?, ale nie jest. Obrazek jest pokazywany jedynie w kilku kolor w nim występujących. Tak jak GIF po redukcji palety kolorów.
Co może być nie tak. Nie działa ani na localhost , ani na serwerze.
Józek
Mam taki skrypt. Może ktoś mi powie dlaczego nie działa.
[php:1:d1a7feff56]<?php
<?
if(!$max_szerokosc)
$max_szerokosc=250;
if(!$max_wysokosc)
$max_wysokosc=350;

$rozmiar=GetImageSize($_GET['obrazek']);
$szerokosc=$rozmiar[0];
$wysokosc=$rozmiar[1];

$wspolczynnik_x=$max_szerokosc/$szerokosc;
$wspolczynnik_y=$max_wysokosc/$wysokosc;

if(($szerokosc<=$max_szerokosc)&&($wysokosc<=$max_wysokosc))
{
$nowa_szerokosc=$szerokosc;
$nowa_wysokosc=$wysokosc;
}
else if(($wspolczynnik_x*$wysokosc)<$max_wysokosc)
{
$nowa_wysokosc=ceil($wspolczynnik_x*$wysokosc);
$nowa_szerokosc=$max_szerokosc;
}
else
{
$nowa_szerokosc=ceil($wspolczynnik_y*$szerokosc);
$nowa_wysokosc=$max_wysokosc;
}

$zrd=ImageCreateFromJpeg($_GET['obrazek']);
$prz=ImageCreate($nowa_szerokosc, $nowa_wysokosc);
ImageCopyResized($prz, $zrd, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
header("Content-type: image/jpeg");
ImageJpeg($prz, "", 90);
ImageDestroy($zrd);
ImageDestroy($prz);
?>

[/php:1:d1a7feff56]
A zdjęcie pokazuję tak:
[php:1:d1a7feff56]<?php
<img src="katalog/zmien_obrazek.php?obrazek=fotka.jpg" border="0" alt="" />
?>[/php:1:d1a7feff56]
Teodor
Jezeli chodzi o jakosc miniaturek to zmien:
[php:1:173d7e144e]<?php
$prz=ImageCreate($nowa_szerokosc, $nowa_wysokosc);
?>[/php:1:173d7e144e]
na:
[php:1:173d7e144e]<?php
$prz=ImageCreateTrueColor($nowa_szerokosc, $nowa_wysokosc);
?>[/php:1:173d7e144e]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.