Obracanie obrazka i zapis

0

Witam,
Mam taki skrypt:
[code]

<?php $image = 'CHeadN_S1.jpg'; $degrees = 180; header('Content-type: image/jpeg') ; $source = imagecreatefromjpeg($image) ; $rotate = imagerotate($source, $degrees, 0) ; imagejpeg($rotate) ; ?>

[/code]

chciałbym zapisywać do pliku obrócony obrazek, wiecie może jak to zrobić??

Northwest

0

działa, dzięki :)
ale coś jest nie tak, jak obrócę obrazek o np. 23 stopnie, to wokół obrazka mam czarne pole:
http://www.eksiegarnia.net/autka/zielony_23.jpg - jak sie tego pozbyć??:)

0

http://pl2.php.net/manual/pl/function.imagerotate.php

bgd_color

Specifies the color of the uncovered zone after the rotation

Albo w skrócie RT(f)M ;)

0

czyli co powinienem podać żeby to "czarne" było przeźroczyste ??

0

używasz imagejpeg, a z tego co się orientuję tam nie ma kanału alfa.
Musisz użyć albo gif, albo png ...

Aha i pewnie przyda Ci się
http://pl2.php.net/manual/pl/function.imagecolortransparent.php

0

hmmm.... przerobiłem swój kod na coś takiego:

$image = 'CHeadN_S1.gif';
$degrees = 0;
for ($degrees = 1; $degrees <= 10; $degrees++) {
header('Content-type: image/gif') ;
$source = imagecreatefromgif($image) ;
$rotate = imagerotate($source, $degrees) ;
imagegif($rotate, "zielony/zielony_".$degrees.".gif") ;
}

ale teraz PHP zwraca mi błąd Obrazek "http://localhost/obrazek.php" nie może zostać wyświetlony, ponieważ zawiera błędy. :/

0

qurcze, próbuje różne przykłady i zawsze jest albo czarne, albo niebieskie tło... :/

0

tu po kolei jakie funkcje stosowac

http://4programmers.net/Forum/453753#id453753

daj wiecej kodu (czy startowy obrazek to jpg czy png/gif ?)

0

startowy obrazek to GIF (ale mogę zrobić z niego PNG jak trzeba). Docelowo ma być GIF (lub PNG).

mam 1 zdjęcie i muszę je obrócić we wszystkie możliwe strony (od 1 do 360 stopni).
Mój kod wygląda tak jak ten na górze, lub tak:

$im = imagecreatefrompng('CHeadN_S1.png');
$tr = imagecolortransparent( $im );
$r = imagerotate( $im, 95, $tr );
imagesavealpha( $r, true );
header( 'Content-type: image/png' );
imagepng($r);      





header( 'Content-type: image/gif' );

$filename = 'CHeadN_S1.gif'; // any transparent gif
$source   = imagecreatefromgif( $filename );

imagefilter( $source, IMG_FILTER_GAUSSIAN_BLUR );

// Set background transparent
imagecolortransparent( $source, imagecolorat( $source, 1, 1 ) );

imagegif( $source );
imagedestroy( $source );

niestety żadna kombinacja nie działa...:(

0

w tym przypadku problem pewnie lezy po stronie filtru (tu tez nalezalo by zadbac o przeroczystosc)

<?php
$filename = 'CHeadN_S1.png'; 
$source   = imagecreatefrompng( $filename );


$r = imagerotate( $source, 95, -1 );

imagealphablending($r, true); 
imagesavealpha($r, true);

header( 'Content-type: image/png' );
imagepng($r);      
imagedestroy( $source );
imagedestroy( $r );
?>

to dziala zakladajac ze mamy png jak ten z bialym transparent
http://www.eksiegarnia.net/autka/CHeadN_S1.gif

0

coś jeszcze jest nie tak :/
coś dalej nie działa ://
Próbowałem też z gif - mam taki kod:

$filename = 'CHeadN_S1.gif';
$source   = imagecreatefromgif( $filename );


$r = imagerotate( $source, 95, -1 );

imagealphablending($r, true);
imagesavealpha($r, true);

header( 'Content-type: image/gif' );
imagegif($r);
imagedestroy( $source );
imagedestroy( $r );

(czyli Twój) i plik: www.eksiegarnia.net/autka/org.gif

Przeglądarka zwraca błąd:
Obrazek nie może zostać wyświetlony, ponieważ zawiera błędy...

0

Skoro uparleś się na gifa (mimo, że png byłby dużo lepszy jeśli chodzi o brzegi obróconego obrazka)

$filename = 'org.gif';
$source   = imagecreatefromgif( $filename );

$color = imagecolorat($source, 0, 0);
$r = imagerotate( $source, 45, $color );
$color = imagecolorat($r, 0, 0);
imagecolortransparent($r, $color);
header( 'Content-type: image/gif' );
imagegif($r);
imagedestroy( $source );
imagedestroy( $r );
0

dzięki za przykład - działa :) jak to teraz zapisać do pliku??:)

ps. strasznie "obszarpane" są te zdjęcia momentami - nie da się tego jakoś poprawić:/

kod z png:

$filename = 'CHeadN_S1.png';
$source   = imagecreatefrompng( $filename );
$color = imagecolorat($source, 0, 0);
$r = imagerotate( $source, 50, $color );
$color = imagecolorat($r, 0, 0);
imagecolortransparent($r, $color);
header( 'Content-type: image/png' );
imagepng($r);
imagedestroy( $source );
imagedestroy( $r );

zwraca obrazek jeszcze gorszej jakości niż z GIF...

0

Bo zkiepsciles cos, podalem kod i tu przyklad

Moj kod
user imageuser imageuser image

i to chyba efekt twojego
user imageuser imageuser image

0

hmmm... zgadza się, to moje.... dlaczego Twoje są takie ładne?? :|

0

Bo masz jakiegos skopanego PNG

user image

<?php


if (isset($_GET['b']))
{
$filename = 'zielony_90.png';
}else{
$filename = 'CHeadN_S1.png'; 
}



$source   = imagecreatefrompng( $filename );


$a = 0;
if (isset($_GET['a'])) $a = (int)$_GET['a'];


$r = imagerotate( $source, $a, -1 );

imagealphablending($r, true); 
imagesavealpha($r, true);

header( 'Content-type: image/png' );
imagepng($r);      
imagedestroy( $source );
imagedestroy( $r );
?>

aby uprzedzic pytanie, ja go zrobilem w gimpie, drugiego przekonwertowalem na probe w irfan view i o dziwo jest gorszy (gubi przezroczystosc przy obrocie ?! i jest mniejszy o jakies 30 bajtow).

0

www.eksiegarnia.net/autka/org - tu są oryginalne pliki (GIF)

przerabiałem je PAINT .NET na format PNG i wtedy poprzez PHP
chciałem je obracać...

Z jakiego png (oryginalnego Ty korzystasz)??:) czym przerobić te GIFy żeby działało??

0

che che juz odpowiedzialem - patrz edycja

0

qurcze, zrobiłem export w gimpie i jest jeszcze gorzej - doszły znowu te czarne boki ://

0

jaką masz wersję PHP?? Może mam jakąś starszą - która ma problemy z grafikami??
ps. masz maila;)

0

trzeba znajdywac wyjscia z opresji

user imageuser imageuser imageuser imageuser imageuser image

<?php


if (isset($_GET['c']))
{

 $c = 1;
 $c = (int)$_GET['c']; 
 if (($c<1) || ($c>6)) $c = 1;


   $ff = "CHeadN_S".$c.".gif";
   
   
   $ti = imagecreatefromgif($ff);
   list($tiwidth, $tiheight) = getimagesize($ff);
   $thumb = imagecreatetruecolor($tiwidth, $tiheight);
   imagealphablending($thumb, false);
   $color = imagecolorallocatealpha($thumb, 255, 255, 255, 127);
   imagefill($thumb, 0, 0, $color);
   imagesavealpha($thumb, true);   
   imagecopyresampled($thumb, $ti, 0, 0, 0, 0, $tiwidth, $tiheight, $tiwidth, $tiheight);
$source   = $thumb;
}else{
if (isset($_GET['b']))
{
$filename = 'zielony_90.png';
}else{
$filename = 'CHeadN_S1.png'; 
}

$source   = imagecreatefrompng( $filename );
}




$a = 0;
if (isset($_GET['a'])) $a = (int)$_GET['a'];


$r = imagerotate( $source, $a, -1 );

imagealphablending($r, true); 
imagesavealpha($r, true);

header( 'Content-type: image/png' );
imagepng($r);      
imagedestroy( $source );
imagedestroy( $r );
?>
0

extra -działa:DDD dzięki WIELKIE :))))

1 użytkowników online, w tym zalogowanych: 0, gości: 1