Upload obrazków i dziwne tło

0

Witam serdecznie wszystkich.
Ładuję obrazek na serwer i zapisuję go przy użyciu:

imagecreatefromjpeg ($filename)

Jednak po załadowaniu i kliknięciu drukuj obrazka, ustawiając monitor pod kątem ma on dziwne tło. Raz to tło jest kratkowane a raz są na nim pionowe pasy.

Obrazek przed załadowaniem na stronie, oglądając go na monitorze ustawionym pod kątem, ma czyste białe tło.
Wygląda na to że obrazek traci jakość podczas ładowania ? Czy może jest jakaś inna przyczyna.
Tak wygląda obrazek:
user image

0

A czemu obrazek, któremu robisz upload, zapisujesz przy pomocy "imagecreatefromjpeg" ?

0

A przy pomocy jakiej funkcji powinienem ?

0

@lukasheek88: daj cały kod, którym modyfikujesz obrazek + ten źródłowy obrazek.

0

Poniżej kod którym uploaduje obrazki:

$plik_tmp = $_FILES['plik']['tmp_name']; 
$plik_nazwa = mktime()."_".$_FILES['plik']['name']; 
$plik_rozmiar = $_FILES['plik']['size']; 
$katalog_duze="../materialy/pomoce_naukowe/";
$katalog_min="../miniatury/pomoce_naukowe/";

if (!file_exists($katalog_duze)) { 
mkdir ($katalog_duze, 0777, true);
}
if (!file_exists($katalog_min)) { 
mkdir ($katalog_min, 0777, true);
}
$link_duze = $katalog_duze."".$plik_nazwa;
$ile_znakow = strlen($link_duze);

$typ_pliku = $_FILES['plik']['type']; 

switch($typ_pliku){
case 'image/jpg':
$rodzaj_pliku = "jpg";
break;
case 'image/jpeg':
$rodzaj_pliku = "jpeg";
break;
case 'image/gif':
$rodzaj_pliku = "gif";
break;
case 'image/png':
$rodzaj_pliku = "png";
break;
case 'application/pdf':
$rodzaj_pliku = "pdf";
break;
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
$rodzaj_pliku = "word";
break;
case 'application/msword':
$rodzaj_pliku = "word";
break;
}

If($ile_znakow<201){

    if (($_FILES['plik'] == 'none') OR (empty($_FILES['plik']['name'])) )
    {
       $message = "Plik nie został załadowany!";
	   ?>
		<h4 class="alert_error">Obrazek nie został zapisany. Spróbuj ponownie. <?php echo $message;?></h4>
	   <?php
    }
    else if ($_FILES['plik']['size'] == 0)
    {
       $message = "Plik ma zero bajtów!";
	   ?>
		<h4 class="alert_error">Obrazek nie został zapisany. Spróbuj ponownie. <?php echo $message;?></h4>
	   <?php
    }
    else if (($_FILES['plik']['type'] != "image/jpeg") AND ($_FILES['plik']['type'] != "image/jpg") AND ($_FILES['plik']["type"] != "image/png") AND ($_FILES['plik']["type"] != "image/gif") AND ($_FILES['plik']["type"] != "application/msword") AND ($_FILES['plik']["type"] != "application/pdf") AND ($_FILES['plik']["type"] != "application/vnd.openxmlformats-officedocument.wordprocessingml.document"))
    {
       $message = "Dozwolone pliki to .jpg, .jpeg, .png, .gif, .doc, .docx, .pdf";
	   ?>
		<h4 class="alert_error">Obrazek nie został zapisany. Spróbuj ponownie. <?php echo $message;?></h4>
	   <?php
    }
    else if (!is_uploaded_file($_FILES['plik']['tmp_name']))
    {
       $message = "Awaria na serwerze. Prośba o zgłoszenie tego administratorowi.";
	   ?>
		<h4 class="alert_error">Obrazek nie został zapisany. Spróbuj ponownie. <?php echo $message;?></h4>
	   <?php
    }
    else {
      $message = "";
      $move = @move_uploaded_file($_FILES['plik']['tmp_name'], $link_duze);
      if(!$move)
      {
         $message = "Problem podczas zapisu plik. Sprawdź czy możesz zapisywać w ścieżce ".$katalog_duze." !" ;
      }
	  else
	  {


IF(($rodzaj_pliku=="jpg") OR ($rodzaj_pliku=="jpeg") OR ($rodzaj_pliku=="png") OR ($rodzaj_pliku=="gif")){
list($width, $height, $type) = getimagesize($katalog_duze."".$plik_nazwa."");

	  switch($type){
	case '1':
	$img = imagecreatefromgif($katalog_duze."".$plik_nazwa."");
	break;
	case '2':
	$img = imagecreatefromjpeg($katalog_duze."".$plik_nazwa."");
	break;
	case'3':
	$img = imagecreatefrompng($katalog_duze."".$plik_nazwa."");
	break;
	}
	$width_mini = $width;
	$height_mini = $height;
	  If($width>240){
		$proporcja = 240/$width;
		$wysokosc = $height*$proporcja;
		$width_mini = 240;
		$height_mini = $wysokosc;
			  }
	  If($height>240){
		$proporcja = 240/$height;
		$szerokosc = $width*$proporcja;
		$height_mini = 240;
		$width_mini = $szerokosc;
			  }
	  $img_mini = imagecreatetruecolor($width_mini, $height_mini);	  
	  imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width, $height);
	$zapisz = $katalog_min."min_".$plik_nazwa."";
	   switch($type){
	case '1':
	imagegif($img_mini, "$zapisz", 100);
	break;
	case '2':
	imagejpeg($img_mini, "$zapisz", 100);
	break;
	case'3':
	imagepng($img_mini, "$zapisz", 7);
	break;
	}
}
elseif($rodzaj_pliku=="pdf")
{
$zapisz = "../miniatury/pdf.png";
}
elseif($rodzaj_pliku=="word")
{
$zapisz = "../miniatury/word.png";
}
	$data = mktime();

$query = "INSERT INTO `zasoby` (`link_duze`, `link_male`, `wiek`, `kategoria`, `data_dodania`, `typ`, `nazwa`, `tag1`, `tag2`, `tag3`, `tag4`, `tag5`, `tag6`, `grupa`, `zrodlo`) 

VALUES ('".$link_duze."', '".$zapisz."', '".$_POST['wiek']."', '".$_POST['kategoria']."', '".$data."', '".$rodzaj_pliku."', '".$_POST['nazwa']."', '".$_POST['tag1']."', '".$_POST['tag2']."', '".$_POST['tag3']."', '".$_POST['tag4']."', '".$_POST['tag5']."', '".$_POST['tag6']."', '1', '".$_POST['zrodlo']."')";

If(mysql_query($query)){
?>
<h4 class="alert_success">Obrazek został zapisany pomyślnie! <?php echo $message;?></h4>
<?php
}
else
{
?>
<h4 class="alert_error">Obrazek nie został zapisany. Spróbuj ponownie. <?php echo $message;?></h4>
<?php
}
}
}
}
 
0

A obrazek testowy?

0

Sorry zapomniałem. Już jest:
http://zapodaj.net/1c35fab9ea7be.jpg.html

0

Przesyłam załącznik w zip.

0

I jak, ktoś podpowie ?

0

Sprawdziłem temat i dobrych wieści nie mam:

  1. U mnie działa. Sprawdź załącznik - wywaliłem co niepotrzebne z kodu do szybkiego wytestowania i działa ok.
  2. Kod jest paskudny i dziurawy. Plików nie sprawdza się po $_FILES['plik']['type'] bo ta informacja przychodzi z przeglądarki użytkownika. Każdy może tam wstawić co chce.
  3. SQL Injection. Masakra. Poszukaj w Google co to jest. Funkcje mysql_* są przestarzałe i niedługo będą usunięte.

I trochę bardziej nie na temat:
4) Po co ta weryfikacja na ilość znaków?
5) Co to jest? $_FILES['plik'] == 'none' - to nigdy nie ma prawa się spełnić.
6) Formatowanie kodu.. W notatniku to piszesz? Jeżeli faktycznie błąd jest po stronie kodu - to w tym bałaganie ciężko się odnaleźć.
7) Dlaczego nie korzystasz z gotowych klas do przetwarzania obrazków? Wynajdujesz koło od nowa. Funkcje gd w php są strasznie surowe i ciężko w tym zrobić na szybko coś z sensem.

0

Dzieki. Zapoznam sie z tym. Pozdrawiam

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