Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Komprejsa zdjęć w PHP
waterwall
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 26.04.2003
Skąd: Konstantynów Łódzki

Ostrzeżenie: (0%)
-----


Chciałbym zmniejszyć kompresję zapisu zdjęć w php.
Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
Józek
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.07.2003
Skąd: Chełm

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
MaKaO
post
Post #4





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Głogów

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Józek
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.07.2003
Skąd: Chełm

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Józek
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.07.2003
Skąd: Chełm

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Józek
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 12.07.2003
Skąd: Chełm

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
Teodor
post
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 13.04.2003
Skąd: Poznan

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 12:36