Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Skalowanie PNG z przeźroczystością
KrzysiekKCN
post 11.06.2011, 12:08:59
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


Witam, przeszukałem troszkę po sieci i znalazłem mnóstwo porad, jednak to co innym działa mi niestety nie pomogło.
Jakość obrazu jest jak z kalkulatora, a przezroczystości i tak niema.

Legenda:
alphachannel_example.png -> plik bez tła o wymiarach 33x33
linie 53 i 54 są z manuala bez nich kolor tła jest biały z nimi czarny, no ale nie to chyba miały robić.
  1. <body style="background: green;">
  2. <?php
  3. ini_set( 'display_errors', 'On' );
  4. error_reporting( E_ALL );
  5. ///////////////////////////////////////////////////////
  6. if (isset($_POST['tytul']) && isset($_POST['tresc']) && isset($_POST['technologie']) && isset($_POST['folder']) && isset($_POST['link']) && isset($_POST['pakiet'])) {
  7. // wyswietlanie danych//
  8. echo 'Tytul :'.$_POST['tytul'].'<br>';
  9. echo 'Opis :'.$_POST['tresc'].'<br>';
  10.  
  11. echo 'Technologie :';
  12. $technologie = $_POST['technologie'];
  13. if ($technologie){
  14. foreach ($technologie as $t) echo $t.', ';
  15. }
  16. echo '<br>';
  17. echo 'Folder :'.$_POST['folder'].'<br>';
  18. echo 'Link :'.$_POST['link'].'<br>';
  19. echo 'Pakiet :'.$_POST['pakiet'].'<br>';
  20. /////////////////////
  21. $dir1 = 'realizacje';
  22. $dir2 = $_POST['folder'];
  23. // tworze katalog realizacji
  24. if (is_dir($dir1)) {
  25. } else {
  26. mkdir($dir1, 0700);
  27. }
  28. $dir3 = $dir1.'/'.$dir2;
  29. if (is_dir($dir3)) {
  30. } else {
  31. mkdir($dir3, 0700);
  32. }
  33. ///////////////////////////
  34. // upload pliku logo.png
  35. $nazwapliku = ($_FILES['logo']['name']);
  36. $uploaddir = $dir3.'/logo';
  37. $uploadfile = $uploaddir . basename($_FILES['logo']['name']);
  38. //////////////////////////////////////////////////////////////////////////
  39. if(is_file($uploadfile)) {
  40. echo 'Taki plik już jest na serwerze, zmień nazwę lub wybierz inny plik';
  41. } else {
  42. if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) {
  43. echo 'Poprawnie załadowano plik logo.';
  44. // skalowanie
  45. $img = imagecreatefrompng($uploadfile);
  46. $width = imagesx($img);
  47. $height = imagesy($img);
  48. //probojemy tworzyc aplha
  49. $img_mini = imagecreatefrompng('alphachannel_example.png');
  50. $width_mini = '33';
  51. $height_mini = '33';
  52. imagealphablending($img_mini, false); // te linie wg. manuala powinny być, ale bez nich tło jest białe a z nimi czarne.
  53. imagesavealpha($img_mini, true); // tak czy tak jakość jak z kalkulatora
  54. // podstawiamy orginał pod pusty
  55. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  56. imagejpeg($img_mini, "".$dir3."/mini.png", 80);
  57. $sciezka_mini = $dir3.'/mini.png';
  58. unlink($uploadfile);
  59. echo '<p class="info">Plik logo.png:: <br><img src="'.$sciezka_mini.'"></p>';
  60. echo '<p class="done">Twoje dane zostały zaktualizowane!</p>';
  61. } else {
  62. echo '<p class="error">Strona w niebezpieczeństwie! Możliwy atak!</p>';
  63. }
  64. }
  65.  
  66.  
  67.  
  68. } else {
  69. <form method="POST" enctype="multipart/form-data" action="index.php">
  70. <input type="hidden" name="MAX_FILE_SIZE" value="30000000000000" />
  71. <label for="t">Tytuł:</label><br>
  72. <input type="text" name="tytul" id="t" value=""><br>
  73.  
  74. <label for="t">Opis:</label><br>
  75. <textarea name="tresc"></textarea><br>
  76.  
  77. <label for="t">Technologie:</label><br>
  78. <select name="technologie[]" multiple="multiple" size="1">
  79. <option>xHTML</option>
  80. <option>CSS</option>
  81. <option>PHP</option>
  82. <option>FlashMX + AS</option>
  83. <option>JavaScript</option>
  84. <option>jQuery</option>
  85. <option>Ruby</option>
  86. <option>PSD</option>
  87. <option>SQL</option>
  88. <option>XML</option>
  89. </select><br>
  90.  
  91. <label for="t">Folder:</label><br>
  92. <input type="text" name="folder" id="t" value=""><br>
  93.  
  94. <label for="t">Link:</label><br>
  95. <input type="text" name="link" id="t" value=""><br>
  96.  
  97. <label for="t">Pakiet:</label><br>
  98. <input type="radio" name="pakiet" value="1" checked="checked" />Picture<br>
  99. <input type="radio" name="pakiet" value="2" checked="checked" />Personal<br>
  100. <input type="radio" name="pakiet" value="3" checked="checked" />Premium<br>
  101. <input type="radio" name="pakiet" value="4" checked="checked" />Business<br><br>
  102.  
  103. <label>Logo.png (33x33px):</label><br>
  104. Wybierz plik: <input name="logo" type="file" /><br><br>
  105.  
  106. <label>SlideS.png (253x53px):</label><br>
  107. Wybierz plik: <input name="slides" type="file" /><br><br>
  108.  
  109. <label>SlideB.png (646x336px):</label><br>
  110. Wybierz plik: <input name="slideb" type="file" /><br><br>
  111.  
  112. <label>All.jpg (1024x768px):</label><br>
  113. Wybierz plik: <input name="all" type="file" /><br><br>
  114.  
  115. <input type="submit" class="submit" value="Zapisz zmiany!" />
  116. </form>
  117. ';
  118. }
  119. ////////////////////////////////////////////////////////
  120. ///////////////////////////////////////////////////////
  121. ///////////////////////////////////////////////////////
  122. ?>

Z góry dzięki za pomoc.

P.S. Nie wyświetla żadnych błędów.
i tak.. szukałem np. tutaj
Go to the top of the page
+Quote Post
everth
post 11.06.2011, 12:54:33
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


A to? W przypadku GD to uczciwie ci poradzę - skorzystaj z gotowej biblioteki do tego np. phpThumb. Inaczej osiwiejesz, poznasz pierdylion funkcji z pierdylionem argumentów (z których potrzebujesz zmodyfikować jeden) a końcowy efekt i tak będzie zależał od szczęścia.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
red9skull
post 11.06.2011, 14:26:03
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(everth @ 11.06.2011, 13:54:33 ) *
A to? W przypadku GD to uczciwie ci poradzę - skorzystaj z gotowej biblioteki do tego np. phpThumb.

zawsze myslalem, ze gd to jest biblioteka


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
KrzysiekKCN
post 11.06.2011, 22:04:02
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 2
Dołączył: 4.08.2009
Skąd: Poznań

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


To nie działa.. A może ja robię coś nie w te stronę?
Ogólnie w 20 linii tego skryptu przestaje działać i zaczyna go wyświetlać, czego wynikiem jest:
  1. $h/$imgInfo[1]) { $nWidth = $w; $nHeight = $imgInfo[1]*($w/$imgInfo[0]); }else{ $nWidth = $imgInfo[0]*($h/$imgInfo[1]); $nHeight = $h; } } $nWidth = round($nWidth); $nHeight = round($nHeight); $newImg = imagecreatetruecolor($nWidth, $nHeight); /* Check if this image is PNG or GIF, then set if Transparent*/ if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){ imagealphablending($newImg, false); imagesavealpha($newImg,true); $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent); } imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]); //Generate the file, and rename it to $newfilename switch ($imgInfo[2]) { case 1: imagegif($newImg,$newfilename); break; case 2: imagejpeg($newImg,$newfilename); break; case 3: imagepng($newImg,$newfilename); break; default: trigger_error('Failed resize image!', E_USER_WARNING); break; } return $newfilename; } ?>
  2. Fatal error: Call to undefined function resize() in C:\xampp\htdocs\test\index.php on line 52

Taak... a w kodzie zmieniłem:
  1. if(is_file($uploadfile)) {
  2. echo 'Taki plik już jest na serwerze, zmień nazwę lub wybierz inny plik';
  3. } else {
  4. if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadfile)) {
  5. echo 'Poprawnie załadowano plik logo.';
  6. /////////////////
  7. include_once("imageresize.php");
  8. $img = "realizacje/1/all.png"; // File image location
  9. $newfilename = "thumb_image.png"; // New file name for thumb
  10. $w = 100;
  11. $h = 100;
  12.  
  13. $thumbnail = resize($img, $w, $h, $newfilename);
  14.  
  15. echo "<img src='".$thumbnail."'>";
  16. }
  17. }


Dziękuje wszystko działa, temat do zamknięcia.

Ten post edytował KrzysiekKCN 11.06.2011, 22:08:05
Go to the top of the page
+Quote Post

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: 26.04.2024 - 08:58