Avatar billede zorg_86 Nybegynder
19. juli 2003 - 13:06 Der er 36 kommentarer og
1 løsning

Ændre størrelsen på et billede som skal uploades

Hej

Jeg har denne kode til at uploade billeder med:

if (isset($_FILES['upfile'])) {
    $id = $_GET['id'];
    $dist = $_SERVER['DOCUMENT_ROOT']."/avatars/";
    $value = $_FILES['upfile']['name'];
        if ($value) {
            if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {
                $temparr = explode(".", $value);
                $temparr[count($temparr)-2] = $id;
                $files = implode(".", $temparr);
                if (!eregi(".jpg$", $files)) {
                    echo 'ugyldig filtype<br>';
                    exit;
                }
                move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $files);
                $billede_sti = "image.php?avatar=".$id;
                mysql_query("UPDATE brugere SET avatar='$billede_sti' WHERE id='$id'");
            } else {
                echo 'Der er sket en fejl!';
            }
            echo 'avatar uploadet';
        }
}

Nogle der kan lave så hvis billedet er større end 160 pixels i bredden så skal den ændre den til det.. og det skal være selve billedet den gør det på....
Højde skal den selv tilpasse så det passer med de 160 i bredden..
Avatar billede ohmish Nybegynder
19. juli 2003 - 13:30 #1
sådan.. nu ser dit script sådan ud:

$fejl=0;
$id = $_GET['id'];
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=".$id;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = strtolower($uploadfil);
$nyfil = str_replace("_", '', $nyfil);
$nyfil = ereg_replace("[ \\//]", '_', $nyfil);
$nyfil = eregi_replace("[^a-z0-9_\.]", '', $nyfil);

$filinfo = getimagesize($tempfil);
if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; }
elseif ($filinfo[2] != 2) { echo = "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if (is_uploaded_file($tempfil) && $fejl==0) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = imageCreateTrueColor($img[width],$img[height]);
    imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    // imageCopyResized($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height); 
    imageJPEG($nIm,$picsti.$nyfil,$quality);
    imageDestroy($nIm);
    imagedestroy($src_img);
} else { move_uploaded_file($tempfil, $picsti.$nyfil); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>250) { echo "Size of picture (after downscale) is: $filstr kb. Modem-creatures won't love it<br>"; $fejl++;
unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE id='$id'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
Avatar billede ohmish Nybegynder
19. juli 2003 - 13:31 #2
hov.. den sidste del skal se sådan her ud:

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = imageCreateTrueColor($img[width],$img[height]);
    imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    // imageCopyResized($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height); 
    imageJPEG($nIm,$picsti.$nyfil,$quality);
    imageDestroy($nIm);
    imagedestroy($src_img);
} else { move_uploaded_file($tempfil, $picsti.$nyfil); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>250) { echo "Size of picture (after downscale) is: $filstr kb. Modem-creatures won't love it<br>"; $fejl++;
unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE id='$id'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 13:46 #3
Skal jeg bare tage den nederste kode?
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 13:47 #4
Eller er det sådan den skal se ud?


$fejl=0;
$id = $_GET['id'];
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=".$id;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = strtolower($uploadfil);
$nyfil = str_replace("_", '', $nyfil);
$nyfil = ereg_replace("[ \\//]", '_', $nyfil);
$nyfil = eregi_replace("[^a-z0-9_\.]", '', $nyfil);

$filinfo = getimagesize($tempfil);
if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; }
elseif ($filinfo[2] != 2) { echo = "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if (is_uploaded_file($tempfil) && $fejl==0) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = imageCreateTrueColor($img[width],$img[height]);
    imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    // imageCopyResized($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height); 
    imageJPEG($nIm,$picsti.$nyfil,$quality);
    imageDestroy($nIm);
    imagedestroy($src_img);
} else { move_uploaded_file($tempfil, $picsti.$nyfil); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>250) { echo "Size of picture (after downscale) is: $filstr kb. Modem-creatures won't love it<br>"; $fejl++;
unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE id='$id'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
Avatar billede ohmish Nybegynder
19. juli 2003 - 13:48 #5
jeps. og sætte det her ovenover:

$fejl=0;
$id = $_GET['id'];
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=".$id;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = strtolower($uploadfil);
$nyfil = str_replace("_", '', $nyfil);
$nyfil = ereg_replace("[ \\//]", '_', $nyfil);
$nyfil = eregi_replace("[^a-z0-9_\.]", '', $nyfil);

$filinfo = getimagesize($tempfil);
if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; }
elseif ($filinfo[2] != 2) { echo = "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }
Avatar billede ohmish Nybegynder
19. juli 2003 - 13:49 #6
nej. sådan her:

$fejl=0;
$id = $_GET['id'];
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=".$id;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = strtolower($uploadfil);
$nyfil = str_replace("_", '', $nyfil);
$nyfil = ereg_replace("[ \\//]", '_', $nyfil);
$nyfil = eregi_replace("[^a-z0-9_\.]", '', $nyfil);

$filinfo = getimagesize($tempfil);
if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; }
elseif ($filinfo[2] != 2) { echo = "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

hov.. den sidste del skal se sådan her ud:

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = imageCreateTrueColor($img[width],$img[height]);
    imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    // imageCopyResized($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height); 
    imageJPEG($nIm,$picsti.$nyfil,$quality);
    imageDestroy($nIm);
    imagedestroy($src_img);
} else { move_uploaded_file($tempfil, $picsti.$nyfil); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>250) { echo "Size of picture (after downscale) is: $filstr kb. Modem-creatures won't love it<br>"; $fejl++;
unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE id='$id'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
Avatar billede ohmish Nybegynder
19. juli 2003 - 13:50 #7
det er alt hvad du skal bruge.. jeg har indflettet det du selv havde. håber det virker..
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 13:54 #8
Den skriver at der er fejl i denne kode:

elseif ($filinfo[2] != 2) { echo = "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

Det skal kun være muligt at uploade billeder med typen .jpg ...
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 14:09 #9
Fejl: Parse error: parse error, unexpected '=', expecting ',' or ';'
Avatar billede hoejrup Nybegynder
19. juli 2003 - 14:18 #10
så skal du rette den til

elseif ($filinfo[2] != 2) { echo  "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

/per
Avatar billede ohmish Nybegynder
19. juli 2003 - 14:19 #11
fjern = tegnet ved echo
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 14:26 #12
det her? {

Hvis ja så er der stadig samme fejl...
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 14:46 #13
Nu dur det næsten...

Den uploader billedet og ændre størreslen men den ændre ikke filnavn som den skal.. Den skal ændre fil navnet til det der er i i $id...

min kode:


$query=mysql_query("SELECT id FROM brugere WHERE nick = '$_SESSION[user]'");
while($row = mysql_fetch_array($query)) {
    $id=$row['id'];
}

$fejl=0;
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=".$id;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = strtolower($uploadfil);
$nyfil = str_replace("_", '', $nyfil);
$nyfil = ereg_replace("[ \\//]", '_', $nyfil);
$nyfil = eregi_replace("[^a-z0-9_\.]", '', $nyfil);

$filinfo = getimagesize($tempfil);
if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; }
elseif ($filinfo[2] != 2) { echo  "Ugyldig filtype(tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = imageCreateTrueColor($img[width],$img[height]);
    imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    // imageCopyResized($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height); 
    imageJPEG($nIm,$picsti.$nyfil,$quality);
    imageDestroy($nIm);
    imagedestroy($src_img);
} else { move_uploaded_file($tempfil, $picsti.$nyfil); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>250) { echo "Size of picture (after downscale) is: $filstr kb. Modem-creatures won't love it<br>"; $fejl++;
unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE nick = '$_SESSION[user]'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}

Hvis man ikke vælger nogle fil så skriver den denne fejl:
Warning: getimagesize: Unable to open '' for reading.
Du har ikke valgt et billede
----
Hvis man uploader et billede igen så skal den bare ændre adressen i bruger avatar feltet og så skal den bare overskrive det gamle billede...
----
Den skal også sætte kvaliteten ned til 85 som den går hvis den skal ændre størrelsen hvis den ikke skal ændre størrelsen...

Hvis du hjælper mig med det så kan du få ialt 200 points...
Avatar billede ohmish Nybegynder
19. juli 2003 - 16:25 #14
hvordan ser din form ud?
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 16:35 #15
<form enctype="multipart/form-data" action="upload_avatar.php" method="post">
<input name="upfile" type="file" size="25"><br>
<input type="submit" value="Upload" size="50" class="Submitknap">
</form>
Avatar billede ohmish Nybegynder
19. juli 2003 - 16:40 #16
ok.. hvordan ser image.php ud?
Avatar billede ohmish Nybegynder
19. juli 2003 - 16:52 #17
så sku den være der:

$query = @mysql_query("SELECT id FROM brugere WHERE nick = '$_SESSION[user]'");
$row = @mysql_fetch_array($query);
$id = $row['id'];
if (!$id) { echo "bruger ikke fundet"; exit; }

$fejl=0;
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "image.php?avatar=$id_".date("d-m-H-i-s");
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];
$nyfil = $id."jpg";

if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; } else {

$filinfo = @getimagesize($tempfil);
if ($filinfo[2] != 2) { echo  "Ugyldig filtype (tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$maxkb = 150;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = @imageCreateTrueColor($img[width],$img[height]);
    @imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    @imageJPEG($nIm,$picsti.$nyfil,$quality);
    @imageDestroy($nIm);
    @imagedestroy($src_img);
} else { @move_uploaded_file($tempfil, $picsti.$nyfil); @imagedestroy($src_img); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>$maxkb) { echo "Billedet fylder for meget: ($filstr kb). Tænk på folk med modem :)<br>"; $fejl++;
@unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE nick = '$_SESSION[user]'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
}
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 16:53 #18
Det er fanstik en fejl at linket skal være image.php da jeg ikke viste at du også kunne sætte kvaliteten ned...

Så linket som skal sættes ind i avatar i brugere skal bare være avatars/brugernesid.jpg
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 16:59 #19
Hvad er denne til?

$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>$maxkb) { echo "Billedet fylder for meget: ($filstr kb). Tænk på folk med modem :)<br>"; $fejl++;
@unlink($picsti.$nyfil); }


@mysql_query -> hvor har du @ først?

$picurl = "image.php?avatar=$id_".date("d-m-H-i-s"); -> Dato der??
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 17:10 #20
Når den uploader et billede bliver det til f.eks 1jpg der mangler et . så det er 1.jpg...

Jeg har lavet det sådan: $picurl = "/avatars/".$id; men jeg mangler hvilken format det er så i db står der bare /avatars/1
Avatar billede ohmish Nybegynder
19. juli 2003 - 17:15 #21
$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>$maxkb) { echo "Billedet fylder for meget: ($filstr kb). Tænk på folk med modem :)<br>"; $fejl++;
@unlink($picsti.$nyfil); }

er til at begrænse størrelsen i kb på filerne.. men du ka bare fjerne det hvis det ikke er nødvendigt.


@ foran mysql_queries er for at undgå at der bliver vist evt. fejl fra databasen. de skal nok først på når det hele kører som det skal.


$picurl = "image.php?avatar=$id_".date("d-m-H-i-s"); -> Dato der??
ja, dato der. For at forny billedets navn hver gang det blir udskiftet. Ellers vil det gamle billede fra cachen blive vist.



ret hele scriptet til:

$query = @mysql_query("SELECT id FROM brugere WHERE nick = '$_SESSION[user]'");
$row = @mysql_fetch_array($query);
$id = $row['id'];
if (!$id) { echo "bruger ikke fundet"; exit; }

$fejl=0;
$nyfil = $id."_".date("d-m-H-i-s").".jpg";
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "avatars/".$nyfil;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];

if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; } else {

$filinfo = @getimagesize($tempfil);
if ($filinfo[2] != 2) { echo  "Ugyldig filtype (tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$maxkb = 150;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = @imageCreateTrueColor($img[width],$img[height]);
    @imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    @imageJPEG($nIm,$picsti.$nyfil,$quality);
    @imageDestroy($nIm);
    @imagedestroy($src_img);
} else { @move_uploaded_file($tempfil, $picsti.$nyfil); @imagedestroy($src_img); }


$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>$maxkb) { echo "Billedet fylder for meget: ($filstr kb). Tænk på folk med modem :)<br>"; $fejl++;
@unlink($picsti.$nyfil); }

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE nick = '$_SESSION[user]'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
}
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 17:18 #22
Hvis jeg godt vil fjerne det med at man ikke kan uploade for store fil skal jeg så slettet dette?



$filstr = round(filesize($picsti.$nyfil)/1000);
if ($filstr<1) { $filstr=1; }
if ($filstr>$maxkb) { echo "Billedet fylder for meget: ($filstr kb). Tænk på folk med modem :)<br>"; $fejl++;
@unlink($picsti.$nyfil); }

$maxkb = 150;
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 17:20 #23
Kan du ikke lave så hvis man uploader et billede igen så skal den bare overskrive det gamle med det nye?
Avatar billede ohmish Nybegynder
19. juli 2003 - 17:26 #24
til det første: ja, slet de linier.

til det andet: når man uploader et billede igen så overskrives den gamle fil i forvejen. Datoen på filnavnet er som sagt for at opdatére billedet.
Avatar billede ohmish Nybegynder
19. juli 2003 - 17:27 #25
husk at bruge den nyeste version af scriptet.. det jeg skrev sidst
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 17:42 #26
Det har jeg også brugt men hvis jeg fjerner den dato vil den så bare overskrive? altså så den ser sådan ud: $nyfil = $id.".jpg";
Avatar billede ohmish Nybegynder
19. juli 2003 - 18:13 #27
nej. slet ikke det. nu har jeg rettet det lidt.. bla. sat scriptet til at slette det gamle billede først.

ret igen hele skidtet til:

$query = @mysql_query("SELECT id, avatar FROM brugere WHERE nick = '$_SESSION[user]'");
$row = @mysql_fetch_array($query);
$id = $row['id'];
$gammelt = $row['avatar'];
if (!$id) { echo "bruger ikke fundet"; exit; }

$fejl=0;
$nyfil = $id."_".date("d-m-H-i-s").".jpg";
$picsti = $_SERVER['DOCUMENT_ROOT']."/avatars/";
$picurl = "avatars/".$nyfil;
$tempfil = $_FILES['upfile']['tmp_name'];
$uploadfil = $_FILES['upfile']['name'];

if (!$uploadfil) { echo "Du har ikke valgt et billede<br>"; $fejl++; } else {

$filinfo = @getimagesize($tempfil);
if ($filinfo[2] != 2) { echo  "Ugyldig filtype (tilladt: jpg or jpeg/pjpg/pjpeg/jpe)<br>"; $fejl++; }

if ($fejl==0) {
if (is_uploaded_file($tempfil)) {

$quality = 85;
$maxkb = 150;
$big_width = 160;
$big_height = 160;

$src_img = ImageCreateFromJPEG($tempfil);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);

if ($filinfo[0]>$big_width || $filinfo[1]>$big_height) {

if ($src_width<$src_height) {
$img[height]    = $big_height;
$img[width]    = floor($big_height*$src_width/$src_height);
} else {
$img[width]    = $big_width;
$img[height]    = floor($big_width*$src_height/$src_width);
}
    $nIm = @imageCreateTrueColor($img[width],$img[height]);
    @imagecopyresampled($nIm,$src_img,0,0,0,0,$img[width],$img[height],$src_width,$src_height);
    @imageJPEG($nIm,$picsti.$nyfil,$quality);
    @imageDestroy($nIm);
    @imagedestroy($src_img);
} else { @move_uploaded_file($tempfil, $picsti.$nyfil); @imagedestroy($src_img); }

@unlink($picsti.$gammelt);

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE nick = '$_SESSION[user]'");
if (@mysql_affected_rows()>0) { echo "billede uploadet"; } else { echo "der skete en fejl (database)"; }

} else { echo "der skete en fejl"; }
}
}
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 18:19 #28
Hvis jeg har uploadet et billede og vil uploade et nyt så skriver den:
der skete en fejl (database)
Avatar billede ohmish Nybegynder
19. juli 2003 - 19:06 #29
har du husket at starte din session?

prøv evt. at rette den sidste mysql line til:

@mysql_query("UPDATE brugere SET avatar='$picurl' WHERE nick = '$_SESSION[user]'") or die (mysql_error());
Avatar billede ohmish Nybegynder
19. juli 2003 - 19:09 #30
er avatar feltet i databasen stort nok til filnavnet?
sæt det evt. til VARCHAR 50 chars
Avatar billede zorg_86 Nybegynder
19. juli 2003 - 19:46 #31
Jeg har gjort begge dele og den den skriver ingen fejl fra mysql_error...

Den skriver bare når man vi uploade igen: der skete en fejl (database)

Bruger man VARCHAR til tekst?
Hvad betyder 50?
Avatar billede ohmish Nybegynder
19. juli 2003 - 19:57 #32
50 kunne være antallet af karakterer (max) du reserverer til feltet. alt efter 50 bliver så cuttet væk og optager ikke plads i databasen. Hvis du har sat det til f.eks 10, kan linket ikke være i feltet og bliver "korrupt".

Man bruger tit felttypen VARCHAR til tekst under 257 karakterer. Derudover kan "text" eller "blob" bruges.. det er til binær data og optager en del mere plads.

Har du ændret linien med filnavn tilbage så datoen er med?
$nyfil = $id."_".date("d-m-H-i-s").".jpg";
Avatar billede ohmish Nybegynder
19. juli 2003 - 20:02 #33
mysql opdaterer nemlig IKKE en række, hvis det du putter ind er identisk med det der var i forvejen. Men når der er dato og tid med, burde det bare virke...
Avatar billede ohmish Nybegynder
20. juli 2003 - 14:45 #34
der har vist været lidt vrøvl med eksperten..
Avatar billede zorg_86 Nybegynder
20. juli 2003 - 19:49 #35
Det virker 100% nu!

Men kan du ikke lave så hvis den ikke skal ændre størrelsen på billedet så skal den sætte kvaliteten ned til 85...
Avatar billede ohmish Nybegynder
20. juli 2003 - 21:29 #36
hva så hvis kvaliteten i forvejen er på f.eks 50?
Avatar billede ohmish Nybegynder
20. juli 2003 - 21:32 #37
jeg mener.. filens størrelse/kvalitet vil ikke ændre sig betydeligt. og hvis kvaliteten i forvejen er lav, bliver den kun endnu værre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester