Om jag ska tillåta uppladdning av bilder, vill jag kunna skala ner bilderna till "lagom" format innan jag sparar dem på fil. Går det?
Kan man ändra bildstorlek med PHP?
Collapse
X
-
Kika på https://github.com/avalanche123/Imagine
Manual finns att läsa på http://imagine.readthedocs.org/en/latest/index.htmlComment
-
Php GD eller något pluginprogram. Enklast med gd dock.Comment
-
Hej alla hjälpsamma duktiga forumvänner!
Är på väg att ge upp det här med bilder, har kört fast redan i det första steget. Mitt program laddar bara upp bilder som jag har skalat ner manuellt.
Gränssnittet mot Tinymce:
Öppnar clientens utforskare:PHP Code:<?php session_start();?> <!DOCTYPE html> <html> <head > <meta charset="UTF-8"> <meta name="robots" content="noindex, nofollow"> <link rel="stylesheet" href="stilmall.css" type="text/css" /> <style type="text/css"> </style> <title>info</title> <script type="text/javascript" src="js/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", language : "sv", theme : "advanced", theme_advanced_buttons1 : "bold,italic,underline,strikethrough,fontselect,fontsizeselect,|,forecolor,undo", theme_advanced_buttons2 : "", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", content_css : "stilmall.css", theme_advanced_font_sizes : "Liten=12px, Normal=16px, Stor=20px", forced_root_block : '', force_br_newlines : true, force_p_newlines : false }); </script> </head> <body> <?php $_SESSION['sida'] = 'z-edit.php'; $_SESSION['version'] = 0; $_SESSION['visa'] = " "; ?> <?php include ("menylista.php"); ?> <div id="storruta"> <h1>Uppdatering av webbsidor</h1> <div id="knapp3"> <form id="avbryt" name="avbryt" action="z-cancel.php"> <input type="submit" name="submit" id="submit" value="Avbryt" /> </form> </div> <div id="knapp"> <form id="bild" name="bild" action="z-utforska.php"> <input type="submit" name="submit" id="submit" value="Ladda" /> </form> </div> <form id="textfil" name="textfil" method="post" action="z-skriv.php"> <fieldset> <textarea name="gruppsida" id="gruppsida" cols="65" rows="20"><?php $filnamn = $_SESSION['filnamn']; $file = fopen($filnamn, "r"); $innehall = fread($file, filesize ($filnamn)); $_SESSION['sparversion'] = $innehall; echo $innehall; fclose($file);?> </textarea> <p> <!--<label for="submit"></label> --> <input type="submit" name="submit" id="submit" value="Spara" /> </fieldset> </form> <p> <a href="z-restore.php"><span class="storre">Hämta en sparad version</span></a> </div> </body> </html>
Tar hand om det som blev uppladdat:PHP Code:<?php session_start();?> <!DOCTYPE html> <head > <meta charset="UTF-8"> <meta name="robots" content="noindex, nofollow"> <link rel="stylesheet" href="stilmall.css" type="text/css" /> <style type="text/css"> </style> <title>utforska</title> </head> <body> <?php $_SESSION['sida'] = 'z-utforska.php'; //$_SESSION['sida1'] = 'z-utforska.php'; ?> <?php include ("menylista.php"); ?> <div id="storruta"> <h1>Ladda upp en fil</h1> <form method="post" action="z-ladda.php" enctype="multipart/form-data"> <input type="file" id="file" name="file" onchange='submit()'> </form> </div> </body> </html>
Hade börjat testa lite att manipulera bildstorleken (kod bortkommenterad) men det fungerar bara om jag lägger bilden på disk först (får inte tag på värden från tempfilen).PHP Code:<?php session_start();?> <!DOCTYPE html> <html> <head > <meta charset="UTF-8"> <meta name="robots" content="noindex, nofollow"> <link rel="stylesheet" href="stilmall.css" type="text/css" /> <style type="text/css"> </style> <title>ladda</title> </head> <body> <?php $_SESSION['sida'] = 'z-ladda.php'; ?> <?php include ("menylista.php"); ?> <?php $_SESSION['filen']=$_FILES["file"]["name"];?> <div id="storruta"> <h1>Laddar upp vald fil</h1> <?php move_uploaded_file ($_FILES["file"]["tmp_name"], $_SESSION['mapp']."/" . $_FILES["file"]["name"]); ?> <?php if ($_FILES["file"]["type"]=="image/pjpeg"){ /* $bild= $_SESSION['mapp']."/".$_FILES["file"]["name"]; list($width, $height) = getimagesize($bild); echo $width." ".$height; echo " "; echo $_FILES["file"]["type"]; */ $filnamn = $_SESSION['filnamn']; $file = fopen($filnamn, "r"); $innehall = fread($file, filesize ($filnamn)); fclose($file); $divdel="<div class=\"bild-v-260\">"; $imgdel="<img src=\"".$_SESSION['mapp']."/".$_FILES["file"]["name"]."\""." alt=\"bild\"></div>"; $nyinnehall = $divdel.$imgdel.$innehall; $file = fopen($filnamn, "w"); fwrite($file, $nyinnehall); fclose($file); exit; } ?> <?php if ($_FILES["file"]["type"]=="application/pdf"):?> <p> Ange en text till länken<p> <div id="knapp"> <form id="avbryt" name="avbryt" action="z-cancel.php"> <input type="submit" name="submit" id="submit" value="Avbryt" /> </form> </div> <form method="post" action="z-lank.php"> <fieldset> <input type="text" name="text" id="text" size="50"><p> <input type="submit" name="submit" id="submit" value="Skicka"> </fieldset> </form> <?php endif ?> </div> </body> </html>
I övrigt funkar det. Måste slutanvändaren manipulera bilderna själva för att jag överhuvudtaget ska kunna ladda upp dem, kan de ju lika gärna göra hela jobbet med lite hjälpinstruktioner själva? Bilder som jag har skalat ner som jag vill ha dem läggs ut snyggt o prydligt så jag är frestad att nöja mig med det om det inte finns något enkelt sätt att komma förbi det första hindret.MvhComment
-
[citat]men det fungerar bara om jag lägger bilden på disk först (får inte tag på värden från tempfilen).[/citat]Är det verkligen ett problem då? Om det inte går att manipulera tempfilen, spara filen till disk först och öppna den därifrån.
mvhComment
-
Det problemet är ju lätt att komma runt precis som du säger. Värre är att originalfilen inte laddas inte upp alls. Först efter att jag skalar ner bilden manuellt kan jag ladda den. Då känns det ju meningslöst att låta bli att skala ner den helt och hållet till presentabelt skick. Det ställer ju inte större krav på användaren att skala bilden till "färdig" storlek än att skala den till laddbart skick.MvhComment
-
Menar du att bilden är för tung (dvs för många bytes) för att du ska kunna spara den? Vilka tyngder pratar vi om?Comment
-
Om det beror på att filerna är för stora kanske du kan ändra i php.ini om du har tillgång till det?
Comment
-
Tack walter groupius, och tack @nders. Nästa fråga: Måste jag ladda ner nåt för att få till php.ini filen? Blir jag tvungen att gräva i Apache konfigurationen också på min lokala server? Jag fick en länk av @nders, där finns en upload länk i texten. Får lite kalla fötter när jag inte vet vad som händer sen.MvhComment
-
Default inställningen för max uppladdningsstorlek är 2 Mb i php.ini
Har du sidan på ett vanligt webbhotell så har du nog inte så du kan ändra några inställningar i php.ini
Kolla vad du har för inställningar på servern med phpinfo()
/red
Använd ini_set() för att ändra upload_max_filesize i scriptet om du inte har tillgång till php.ini på servern.Om jag var blygsam,skulle jag vara perfekt
><((((º>Comment
-
Det ska räcka att ändra i php.ini om du har tillgång till den. /etc/php5/apache2/php.ini om du har en linux-server. Du ska inte behöva ladda ner något, utom att du kanske ska installera en texteditor. nano brukar finnas med.
Om du inte har tillgång till php.ini så är det inte säkert att ini_set() fungerar heller. Men värt ett försök.Comment
Oderland
Collapse
Comment