Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapisywanie zdjęć, miniatur
tiko35
post 27.01.2010, 00:56:01
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 1.06.2008

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


witam, chciałbym zapytać Was czy poniższy kod jest poprawny - kod przedstawia dodawanie miniaturek i całych zdjęć oraz tworzenie dla nich cieni(kod działa, ale są pewne mankamenty: duże zdjęcia jak i miniaturki są mocno kompresowane przez co zdjęcia tracą na jakości, zdjęcia są kilka razy zapisywane na dysku, jak zrobić by były zapisywane tylko raz) Za wszelką pomoc będę wdzięczny. Oto kod:
  1. <?php
  2. include("dane.php");
  3. $result_final = "";
  4. $counter = 0;
  5. $photos_uploaded = $_FILES['plik'];
  6. $photo_captions = $_POST['nazwa'];
  7. $opis = $_POST['opis'];
  8. $kategoria = $_POST['kategoria'];
  9. $miejsce = $_POST['miejsce'];
  10. $data = $_POST['data'];
  11. $known_photo_types = array(
  12. 'image/pjpeg' => 'jpg',
  13. 'image/jpeg' => 'jpg',
  14. 'image/gif' => 'gif',
  15. 'image/bmp' => 'bmp',
  16. 'image/x-png' => 'png'
  17. );
  18.  
  19. $gd_function_suffix = array(
  20. 'image/pjpeg' => 'JPEG',
  21. 'image/jpeg' => 'JPEG',
  22. 'image/gif' => 'GIF',
  23. 'image/bmp' => 'WBMP',
  24. 'image/x-png' => 'PNG'
  25. );
  26.  
  27. while( $counter <= count($photos_uploaded) )
  28. {
  29. if($photos_uploaded['size'][$counter] > 0)
  30. {
  31. if(!array_key_exists($photos_uploaded['type'][$counter], $known_photo_types))
  32. {
  33. $result_final .= "Plik ".($counter+1)." nie jest zdjęciem.<br />";
  34. }
  35. else
  36. {
  37. if(!empty($_POST['data'][$counter]))
  38. {
  39. $data = strip_tags($_POST['data'][$counter]);
  40. $wyn = mysqli_query($dbc,"SELECT data,id FROM data_zdj WHERE data LIKE '$data'");
  41. if(mysqli_num_rows($wyn) > 0)
  42. {
  43. $id_wlasciwe = mysqli_fetch_array($wyn);
  44. $id_daty = $id_wlasciwe['id'];
  45. }
  46. else
  47. {
  48. $rezultat = mysqli_query($dbc,"INSERT INTO data_zdj(data) VALUES('$data')");
  49. $id_daty = mysqli_insert_id($dbc);
  50. }
  51. }
  52. else
  53. {
  54. $id_daty ='NULL';
  55. }
  56.  
  57. if(!empty($_POST['miejsce'][$counter]))
  58. {
  59. $miejsce = strip_tags($_POST['miejsce'][$counter]);
  60. $wyn = mysqli_query($dbc,"SELECT miejsce,id FROM miejsce_zdj WHERE miejsce LIKE '$miejsce'");
  61. if(mysqli_num_rows($wyn) > 0)
  62. {
  63. $id_wlasciwe = mysqli_fetch_array($wyn);
  64. $id_miejsca = $id_wlasciwe['id'];
  65. }
  66. else
  67. {
  68. $rezultat = mysqli_query($dbc,"INSERT INTO miejsce_zdj(miejsce) VALUES('$miejsce')");
  69. $id_miejsca = mysqli_insert_id($dbc);
  70. }
  71. }
  72. else
  73. {
  74. $id_miejsca='NULL';
  75. }
  76.  
  77. if(!empty($_POST['kategoria'][$counter]))
  78. {
  79. $kategoria = strip_tags($_POST['kategoria'][$counter]);
  80. $wyn = mysqli_query($dbc,"SELECT kategoria.nazwa,id FROM kategoria WHERE kategoria.nazwa LIKE '$kategoria'");
  81. if(mysqli_num_rows($wyn) > 0)
  82. {
  83. $id_wlasciwe = mysqli_fetch_array($wyn);
  84. $id_kategorii = $id_wlasciwe['id'];
  85. }
  86. else
  87. {
  88. $rezultat = mysqli_query($dbc,"INSERT INTO kategoria(nazwa) VALUES('$kategoria')");
  89. $id_kategorii = mysqli_insert_id($dbc);
  90. }
  91. }
  92. else
  93. {
  94. $id_kategorii='NULL';
  95. }
  96.  
  97. if(!empty($_POST['opis'][$counter]))
  98. {
  99. $opis = strip_tags($_POST['opis'][$counter]);
  100. }
  101. else
  102. {
  103. $opis ='NULL';
  104. }
  105.  
  106. if(!empty($_POST['tytul'][$counter]))
  107. {
  108. $tytul = strip_tags($_POST['tytul'][$counter]);
  109. }
  110. else
  111. {
  112. $tytul ='';
  113. }
  114.  


  1. $dodano[$counter] = date("Y-m-d G:i:s");
  2. echo $dodano[$counter];
  3.  
  4. mysqli_query($dbc,"INSERT INTO zdjecie(plik,nazwa,id_kategorii,id_miejsca,id_daty,opis,dodano,tytul)
  5. VALUES('0', '".$photo_captions[$counter]."',$id_kategorii,$id_miejsca,$id_daty,'$opis','$dodano[$counter]','".$tytul."')" );
  6. $new_id = mysqli_insert_id($dbc);
  7. $filetype = $photos_uploaded['type'][$counter];
  8. $extention = $known_photo_types[$filetype];
  9. $filename = $new_id.".".$extention;
  10. mysqli_query( $dbc,"UPDATE zdjecie SET plik='".addslashes($filename)."' WHERE id='".addslashes($new_id)."'" );
  11. copy($photos_uploaded['tmp_name'][$counter],"../".$images_dir."/".$filename);
  12. $size = GetImageSize( '../'.$images_dir."/".$filename );
  13. /*wielkość miniaturek*/
  14. if($size[0] > $size[1])
  15. {
  16. $thumbnail_width = 150;
  17. $thumbnail_height = (int)(150 * $size[1] / $size[0]);
  18. }
  19. else
  20. {
  21. $thumbnail_width = (int)(150 * $size[0] / $size[1]);
  22. $thumbnail_height = 150;
  23. }
  24. $as = $size[0];
  25. $bs = $size[1];
  26. $function_suffix = $gd_function_suffix[$filetype];
  27. $function_to_read = "ImageCreateFrom".$function_suffix;
  28. $function_to_write = "Image".$function_suffix;
  29. $source_handle = $function_to_read ( "../".$images_dir."/".$filename );
  30. if($source_handle)
  31. {
  32. $cos = ImageCreateTrueColor ( $as, $bs );
  33. ImageCopyResampled( $cos, $source_handle, 0, 0, 0, 0, $as, $bs, $size[0], $size[1] );
  34. $destination_handle = ImageCreateTrueColor ( $thumbnail_width, $thumbnail_height );
  35. ImageCopyResampled( $destination_handle, $source_handle, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $size[0], $size[1] );
  36. }
  37. $function_to_write( $cos, "../".$images_dir."/".$filename );
  38. //zapisuje miniaturki
  39. $function_to_write( $destination_handle, "../".$images_dir."/tb_".$filename );
  40. //ważne! - tu ustalam kolor mojego tła
  41. $background = array( "r" => 218 , "g" => 215 , "b" => 200 );
  42. $src = '../zdjecia/tb_'.$filename;
  43. list( $o_width , $o_height ) = getimagesize ( $src );
  44. $width = $o_width + DS_OFFSET ;
  45. $height = $o_height + DS_OFFSET ;
  46. $image = imagecreatetruecolor ( $width , $height );
  47. $step_offset = array( "r" => ( $background [ "r" ] / DS_STEPS ), "g" => ( $background [ "g" ] / DS_STEPS ), "b" => ( $background [ "b" ] / DS_STEPS ));
  48. $current_color = $background ;
  49. for ( $i = 0 ; $i <= DS_STEPS ; $i ++) {
  50. $colors [ $i ] = imagecolorallocate ( $image , round ( $current_color [ "r" ]), round ( $current_color [ "g" ]), round ( $current_color [ "b" ]));
  51. $current_color [ "r" ] -= $step_offset [ "r" ];
  52. $current_color [ "g" ] -= $step_offset [ "g" ];
  53. $current_color [ "b" ] -= $step_offset [ "b" ];
  54. }
  55. imagefilledrectangle ( $image , 0 , 0 , $width , $height , $colors [ 0 ]);
  56. for ( $i = 0 ; $i < count ( $colors ); $i ++) {
  57. imagefilledrectangle ( $image , DS_OFFSET , DS_OFFSET , $width , $height , $colors [ $i ]);
  58. $width -= DS_SPREAD ;
  59. $height -= DS_SPREAD ;
  60. }
  61. $original_image = imagecreatefromjpeg ( $src );
  62. imagecopymerge ( $image , $original_image , 0 , 0 , 0 , 0 , $o_width , $o_height , 100 );
  63. $function_to_write( $image, "../".$images_dir."/tb_".$filename );
  64. $result_final .= "<img src='../".$images_dir. "/tb_".$filename."' /> Dodano ".($counter+1)." zdjęcie.<br />";
  65. }
  66. }
  67. $counter++;
  68. }
  69. echo <<<__HTML_END
  70. <html>
  71. <head>
  72. <title>Upload plików</title>
  73. </head>
  74. <body>
  75. $result_final
  76. </body>
  77. </html>
  78. __HTML_END;
  79. ?>
Go to the top of the page
+Quote Post
quality
post 27.01.2010, 15:51:34
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

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


Wkleiłes cały kod aplikacji i myslisz ze ktos bedzie mial czas to studiowac ?

Do miniuturek nawet z cieniem polecam klase phpThumb zamiast 200 lini kodu masz 2 smile.gif

Pozdrawiam


--------------------
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: 12.07.2025 - 22:50