Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [HTML][PHP]Obrazek „http://localhost/1/zaliczenie.php” nie może zostać wyświetlony, ponieważ zawiera błędy., blad program zaliczenie znak wodny
slawekp17
post 27.01.2012, 19:53:15
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


Witam,

Jak w temacie mam błąd:
Obrazek „http://localhost/1/zaliczenie.php” nie może zostać wyświetlony, ponieważ zawiera błędy.
przy pisaniu programu php, znak wodny z dwóch obrazków.
Jaki błąd/błędy mam w kodzie?

CODE
<?php
header("Content-type: image/jpeg");
$name1 = "Polska.jpg";
$name2 = "stopacta.jpg";
$im1 = imagecreatefromjpeg($name1);
$im2 = imagecreatefromjpeg($name2);
$dane = getimagesize($name2);
$sze = $dane[0]; $wys = $dane[1];
for ($y=0; $y<$wys; $y++) {
for ($x=0; $x<$sze; $x++) {
$rgb = imagecolorat($im2,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$srednia = ($r+$g+$b)/3;

if ($srednia<100) {
$rgb = imagecolorat($im1,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$r_nowe = $r + 40;
$g_nowe = $g + 40;
$b_nowe = $b + 40;
if ($r_nowe>255) $r_nowe=255;
if ($g_nowe>255) $g_nowe=255;
if ($b_nowe>255) $b_nowe=255;
$rgb_nowe = imagecolorallocate($im1, $r_nowe, $g_nowe, $b_nowe);
imagesetpixel($im1,$x,$y,$rgb_nowe);
};
};
};
imagejpeg($im1);
imagedestroy($im1);
?>


Pozdrawiam i proszę o szybką pomoc.

I jeszcze linki do obrazków które użyłem (mam je w tym samym folderze co pracę):
  1. http://www.fotoload.pl/index.php?id=7de9bfc3721456835ceb04855078726d130

  1. http://www.fotoload.pl/index.php?id=7de9bfc3721456835ceb04855078726d130


Ten post edytował slawekp17 27.01.2012, 19:58:46
Go to the top of the page
+Quote Post
Lombi
post 27.01.2012, 20:06:04
Post #2





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


U mnie działa to podręcznikowo.
Jesteś pewien że nazwy plików są dobre? Zmień w $name1 "P" na małą literę i upewnij się czy pliki są i mają identyczne nazwy.

Ten post edytował Lombi 27.01.2012, 20:06:55


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 27.01.2012, 20:17:11
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


Nazwy plików na pewno się zgadzają.
Plik zapisany jako Polska z wielkiej litery.

Tylko nie wiem czy dobrze wogole zapisuję plik.

Aha i mam komunikat jeszcze w Dreamweaver'e:
"Nie można wykryć plików dynamicznie powiązanych, ponieważ nie ma definicji serwisu dla tego dokumentu".


A mógłbyś kolego zapisać to w gotowym pliku i mi wysłać?

Ten post edytował slawekp17 27.01.2012, 20:24:16
Go to the top of the page
+Quote Post
Lombi
post 27.01.2012, 20:27:14
Post #4





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Wrzuć zaliczenie.php i użyte jpg do jakiegoś zipa i daj link do pobrania.

Ten post edytował Lombi 27.01.2012, 20:27:33


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 27.01.2012, 20:31:34
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


  1. http://www38.zippyshare.com/v/54128611/file.html
Go to the top of the page
+Quote Post
Lombi
post 27.01.2012, 20:40:13
Post #6





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Mysiu pusiu smile.gif plik kodowany w UTF-8 z BOM dlatego header zwraca ci błąd. Przekonwertuj pliki php na UTF-8 bez BOM i będzie cacy.
Nie wiem jak to się nazywa w Dreamweaver'e, czy UTF-8 bez BOM czy jak w pajączkach itp UTF-8 bez czegoś tam (za cholere nie pamiętam jak to się mądrze nazywa w tych programach) na początku pliku.


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 27.01.2012, 20:48:49
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


yahoo.gif

Racja.
Odchaczylem tylko "Dołącz sygnaturę Unicode (BOM), jak poradziłeś i działa thumbsupsmileyanim.gif

Duuuuże dziękuję dla ciebie.


Mam tylko jeszcze jedną prośbę, pytanie:
Jak ustawić znak wodny na środku obrazka?
Go to the top of the page
+Quote Post
Lombi
post 27.01.2012, 21:08:36
Post #8





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Sprawdzasz rozmiary fotki i znaku wodnego. Odejmujesz od szerokości fotki szerokość znaku wodnego i dzielisz na dwa. W ten sposób masz parametr x dla znaku wodnego. Analogicznie robisz z wysokością.

Wyssane z palca żebyś zobaczył co i jak:

  1. list($large_width, $large_height) = getimagesize($large_path); // zdjątko
  2. list($wm_width, $wm_height) = getimagesize($wm_path); // znak wodny
  3. $wm_x_pos = (int)($large_width - $wm_width) / 2;
  4. $wm_y_pos = (int)($large_height - $wm_height) / 2;
  5. $icfj = imagecreatefromjpeg($large_path);
  6. $icfp = imagecreatefrompng($wm_path);
  7. imagecopy($icfj, $icfp, $wm_x_pos, $wm_y_pos, 0, 0, $wm_width, $wm_height);
  8. imagejpeg($icfj, $large_path, 100);
  9. imagedestroy($icfj);
  10. imagedestroy($icfp);


Ten post edytował Lombi 27.01.2012, 21:10:44


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 27.01.2012, 21:14:57
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


//Nie wiem jak Ci dziękować.

//Ale na prawdę ogromne dziękuję.


Jeszcze jedna prośba, bo z kolorami mam problem. Chcę żeby te z obrazka 2 (znaku wodnego) były zachowane a po wklejeniu zdjęć na siebie znak wodny był tylko lekko przezroczysty.
I jaką funkcją zacząć kod który wcześniej mi wysłałeś?

Przepraszam za tak dużo pytań, ale dopiero zaczynam się uczyć php'a.

Ten post edytował slawekp17 27.01.2012, 23:12:35
Go to the top of the page
+Quote Post
Lombi
post 27.01.2012, 23:26:50
Post #10





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Co do intensywności znaku wodnego to np imagecopymerge ma możliwość ustawiania w procentach krycia. Mozna nią zastąpić imagecopy. Więcej info w manualu.

Nie rozumiem o co chodzi w pytaniu:
Cytat
I jaką funkcją zacząć kod który wcześniej mi wysłałeś?


Ten post edytował Lombi 27.01.2012, 23:28:00


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 28.01.2012, 10:11:40
Post #11





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


Dokładnie chodzi mi w tym pytaniu w którym miejscu wstawić kod?
I czy tylko to co mi wysłałeś, czy też muszę jeszcze coś zmienić / dodać? worriedsmiley.gif

Przepraszam na prawdę jeszcze raz, ale programowanie to nie mój konik, a niestety jestem zmuszony to zrobić. co_jest.gif

Pomoże ktoś?
Chcę aby te zdjęcia były na siebie nałożone ale z lekką przezroczystością tego drugiego i zachowaniem kolorów.
Jeszcze raz zamieszczam paczkę z plikami:

  1. http://www43.zippyshare.com/v/21733419/file.html


Ten post edytował slawekp17 28.01.2012, 11:03:08
Go to the top of the page
+Quote Post
Lombi
post 28.01.2012, 14:14:55
Post #12





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Jeśli nie musisz mieć obowiązkowo znaku wodnego w jpg to ja bym użył pliku png bez tła.
A wtedy nie musisz bawić się obróbką kolorów i można to zrobić tak:

  1. header("Content-type: image/jpeg");
  2. $image='Polska.jpg';
  3. $watermark='flaga.jpg'; // tu zmieniasz plik na png
  4. list($img_width,$img_height)=getimagesize($image);
  5. list($wm_width,$wm_height)=getimagesize($watermark);
  6. $wm_x_pos=(int)($img_width-$wm_width)/2;
  7. $wm_y_pos=(int)($img_height-$wm_height)/2;
  8. $img=imagecreatefromjpeg($image);
  9. $wm=imagecreatefromjpeg($watermark); // tu zmieniasz funkcję imagecreatefromjpeg na imagecreatefrompng
  10. imagecopymerge($img,$wm,$wm_x_pos,$wm_y_pos,0,0,$wm_width,$wm_height,50); // ostatni parametr to alpha !!!
  11. imagejpeg($img,null,100);
  12. imagedestroy($img);
  13. imagedestroy($wm);


To powinno wystarczyć. MANUAL motyla noga exclamation.gif smile.gif

Ten post edytował Lombi 28.01.2012, 14:26:56


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 28.01.2012, 14:36:41
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


W poleceniu nie ma wymaganych rozszerzeń zdjęć, więc jeśli zmienię chyba nic się nie stanie.
Ogromne kolejne dziękuję dla Ciebie kolego.
Pozdrawiam.

A zmieniając na png muszę jeszcze zmienić:
header("Content-type: image/jpeg, image/png");
..racja?

Ten post edytował slawekp17 28.01.2012, 14:52:07
Go to the top of the page
+Quote Post
Lombi
post 28.01.2012, 15:02:31
Post #14





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Co według Ciebie to ma na celu?
  1. header("Content-type: image/jpeg");

To określa typ obrazka jaki zwraca skrypt prawda?
Wiec jeśli chcesz mieć rezultat jako jpg to zostaw jak jest w innym przypadku zmień na rządany.

Ten post edytował Lombi 28.01.2012, 15:04:46


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 28.01.2012, 15:08:13
Post #15





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


Aha ok.
Zostawiłem, ale niestety dalej teraz błąd w kodzie wyświetla przy odtwarzaniu pliku.
Oczywiście zapisane jest dobrze, chyba.
Dodałem na początku i na końcu <?php, ?> i nic.
Go to the top of the page
+Quote Post
Lombi
post 28.01.2012, 15:11:40
Post #16





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Jej!! Jak piszesz że wyświetla jakiś błąd to ja mogę Ci tylko odpowiedzieć że nie wiem jak jakąś usterkę naprawić


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 28.01.2012, 15:16:31
Post #17





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


To może zapytam ta czy do tego kodu ostatniego (twojego) muszę coś dopisać dokleić z tego pierwszego mojego?
Czy kod który wysłałeś to już rozwiązanie tematu?

A błąd teraz który wyświetla to jak w treści tematu.
Go to the top of the page
+Quote Post
Lombi
post 28.01.2012, 15:19:41
Post #18





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


To skrypt samowystarczalny smile.gif Pokaż jak to finalnie wygląda u Ciebie.


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post
slawekp17
post 28.01.2012, 15:23:56
Post #19





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.01.2012

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


CODE
<?php

header("Content-type: image/jpeg");
$image='Polska.jpg';
$watermark='flaga-polska.png';

list($img_width,$img_height)=getimagesize($image);
list($wm_width,$wm_height)=getimagesize($watermark);

$wm_x_pos=(int)($img_width-$wm_width)/2;
$wm_y_pos=(int)($img_height-$wm_height)/2;
$img=imagecreatefromjpeg($image);
$wm=imagecreatefrompng($watermark);

imagecopymerge($img,$wm,$wm_x_pos,$wm_y_pos,0,0,$wm_width,$wm_height,50);
imagejpeg($img,null,100);
imagedestroy($img);
imagedestroy($wm);

?>
Go to the top of the page
+Quote Post
Lombi
post 28.01.2012, 17:59:28
Post #20





Grupa: Zarejestrowani
Postów: 237
Pomógł: 11
Dołączył: 12.04.2006

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


Aż sprawdziłem. Kod z Twojego ostatniego postu zapisałem i działa. Może znowu masz gdzieś kodowane z BOM. Posprawdzaj to dokładnie.

Natomiast jak już zacząłem to sprawdzać to jest mały problem w tym co zamierzasz osiągnąć.
Funkcja imagecopymerge w odróżnieniu od imagecopy ma parametr alphy, ale lekceważy to że png nie miało tła i dodaje sama czarne (człowiek uczy się przez całe życie smile.gif).
Tak więc albo używasz imagecopymerge i masz możliwość ustawienia krycia znaku wognego, albo imagecopy i masz png bez tła jako znak wodny. Można też dodać do znaku wodnego załóżmy w png czarne tło i w sktypcie ustawić aby rgb 0,0,0 było jako kolor transparent. Dodajesz przed imagecopymerge
  1. $tc=imagecolorallocate($wm,0,0,0);
  2. imagecolortransparent($wm,$tc);

i masz znak wodny o jakimś bardziej zaawansowanym kształcie niż kwadrat, bez tła z kryciem, w przypadku kodu który podałem dziś o 14:14, 50%.

Można się bawić dalej w zależności od tego co jest priorytetem zadania. Ale nie wiem czy to nie przerost formy nad treścią.

Ten post edytował Lombi 29.01.2012, 00:31:25


--------------------
znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:35