TulorkMedlem sedan aug. 2004903 inlägg Undrar bara om någon annan stött på problem med kontroll av pjpeg bilder som är lite större... jag har följande kontroll
if (($this->filtyp != "image/gif")
&& ($this->filtyp != "image/GIF")
&& ($this->filtyp != "image/jpeg")
&& ($this->filtyp != "image/JPEG")
&& ($this->filtyp != "image/png")
&& ($this->filtyp != "image/PNG")
&& ($this->filtyp != "image/jpg")
&& ($this->filtyp != "image/JPG")
&& ($this->filtyp != "image/PJPEG")
&& ($this->filtyp != "image/pjpeg"))
{
$this->error_filformat = false;
}
Allting fungerar som det ska, förutom pjpeg bilder... jag har läst lite om just detta filformatet och att det ibland kan ställa till problem när man försöker skala om dem (bilket jag också gör med bilderna jag laddar upp).
Men hos mig så stoppas alla dessa bilder redan i denna kontrollen.... jag har gjort en annan temporär kontroll som plockar ut filändelsen som den sen kollar... där går den igenom... men stoppas istället när jag försöker kopiera den uppladdade filen till korrekt mapp och när jag försöker skala om det.
Detta måste vara ett känt problem... känns så i alla fall. Jag har bara hittat ett fåtal texter som beskriver ungefär samma problem.. men icke någon lösning.
Pröva följande:
$this->filtyp = strtolower($this->filtyp);
if ($this->filtyp == 'image/jpg' || $this->filtyp == 'image/pjpeg')
$this->filtyp = 'image/jpeg';
if (($this->filtyp != "image/gif")
&& ($this->filtyp != "image/jpeg")
&& ($this->filtyp != "image/png") )
{
$this->error_filformat = false;
}
Jag har även omorganiserat koden lite. MIME-typer bör skrivas med små bokstäver så det är helt i sin ordning att köra en strtolower på resultatet. Vad gäller image/jpg bör aldrig förekomma, det vet jag inte var du fått från. image/pjpeg är i detta fall inte en separat filtyp, utan vad IE väljer att kalla alla jpeg-filer. Lösningen bör vara att byta ut alla förekomster av image/pjpeg mot image/jpeg. Kolla om det funkar och återkom.
TulorkMedlem sedan aug. 2004903 inlägg Samma resultat. Det blir problem när det är över 600kb.... png och gif på 5mb har den inga problem att hantera... vissa jpg går, vissa inte.
colioneMedlem sedan juni 20014 421 inlägg vad får du för mime-type då?
TulorkMedlem sedan aug. 2004903 inlägg jpeg, pjpeg om det är ifrån IE jag laddar upp. Förbryllande fel... det måste nästan ha någonting att göra med hur stor bilden är eller dimesionerna.... känns så i alla fall
Men då kännsd et också som att det är fel på min webbserver.. men jag har testat det på två olika nu.
Jag har testat ladda upp en 3000x3000 .png bild på 5MB... den flöt rakt igenom helt perfekt. jag har även provat extremt stora .gif bilder och dessa fungerar också....
Äh.. jag vet inte längre.
Krånglar samma bilder om du laddar upp dem från olika läsare?
TulorkMedlem sedan aug. 2004903 inlägg webbläsare spelar ingen roll... samma fel oavsett FF, IE, Safari, Maxthon, Opera... dessa är de enda jag provat.
Vad använder du för library för att förstora om bilderna med?
TulorkMedlem sedan aug. 2004903 inlägg Den kommer inte så långt dock... men jag har testat att strunta i kontrollen för att se vad som händer... då blir det massa andra problem... t ex att filen inte hittas när den ska flyttas från temp-mappen till den ordentliga mappen.
Följande kod använder jag för att förminska
<?php
class thumbnail
{
//Skapar thumbnail, eller om bilden är mindre än vald bredd så kopierar den bilden till korrekt mapp
public function new_thumb($thumb, $original, $bredd, $dimensioner, $tempnamn, $bildnamn, $filandelse, $kompression)
{
if ($bredd < $dimensioner[0]) {
$hojd = ceil(($bredd / $dimensioner[0]) * $dimensioner[1]);
// Fixar ny storlek för bilden
$nybild = imagecreatetruecolor($bredd, $hojd);
// Kontrollera vad det är för bildtyp det är
// 1=gif , 2=jpg , 3=png
switch($dimensioner[2]) {
case 1:
$bild = imagecreatefromgif($tempnamn);
break;
case 2:
$bild = imagecreatefromjpeg($tempnamn);
break;
case 3:
$bild = imagecreatefrompng($tempnamn);
break;
}
//renderar bilden
imagecopyresampled($nybild, $bild, 0, 0, 0, 0, $bredd, $hojd, $dimensioner[0], $dimensioner[1]);
// Kopiera bilden till korrekt mapp
$sparabild = $thumb . '/' . $bildnamn;
imagejpeg($nybild, $sparabild, $kompression);
// Frigör minne som associerats med bilderna...
imagedestroy($bild);
imagedestroy($nybild);
return true;
}
//Om bilden redan är mindre än vald thumbnailstorlek flyttar den bilden både till tbumbnail mappen och till originalmappen.
else
{
move_uploaded_file($tempnamn, $thumb . '/' . $bildnamn);
copy ($thumb . '/' . $bildnamn, $original . '/' . $bildnamn);
return false;
}
}
}
?>
TulorkMedlem sedan aug. 2004903 inlägg hmmm... tror jag hittat felet :) Jag har en temporär utvecklingsserver på min egna dator (Vista), så jag provade köra allting på en xp maskin... tidigare provade jag bara byta vista maskin..... nu fungerar det :o
Frågan är bara... varför?