Kom ihåg mig?
Home Menu

Menu


Max image size

Ämnesverktyg Visningsalternativ
Oläst 2007-08-10, 22:35 #1
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Hej!

bygger en nyhets funktion för våra lokala bollklubb där jag gärna hade viljat att bild-uploaden hade maxgräns dvs att bilden hade skalats ner till storleken 800 pix bredd eller dylikt??

Folk laddar nämligen upp bilder på flera megabyte som spränger utrymmet på nolltid.

koden jag har just nu :

<?
include("variablar.php");
$datum = date("Y-m-d");
$tid = date("H:i:s");
$refid = md5(uniqid(rand(),1));

copy ($fil, "$uploadbilder/$fil_name");
$bilds = "$bildurl/$fil_name";

$sql = "INSERT INTO nyheter (undersida, sidnamn, sort, menytyp, rubrik, link, kat, bildnamn, bildurl, bildjustering, email, signatur, text, bildtext, datum, tid, ip)
VALUES ('$undersida', '$sidnamn', '$sort', '$menytyp', '$rubrik', '$link', '$kat', '$fil_name', '$bilds', '$bildjustering', '$email', '$signatur', '$text', '$bildtext', '$datum', '$tid', '$REMOTE_ADDR')";

$pql = mysql_query($sql)or die(mysql_error());
header("location: $HTTP_REFERER");
?>

finns det enkel basic lösning på det?


Tack på förhand..
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-11, 00:34 #2
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Om du har ImageMagick, något liknande (vet inte om man bör byta ut -thumbnail mot något annat när det upplösningen är högre än för thumbnails, men det är nog lätt att ta reda på):

Kod:
<?
include("variablar.php");
$datum = date("Y-m-d");
$tid = date("H:i:s");
$refid = md5(uniqid(rand(),1));

exec('convert -quality 75 -thumbnail 800x600 ' . escapeshellarg(realpath($fil)) . ' ' . escapeshellarg($uploadbilder/$fil_name));
$bilds = "$bildurl/$fil_name";

$sql = "INSERT INTO nyheter (undersida, sidnamn, sort, menytyp, rubrik, link, kat, bildnamn, bildurl, bildjustering, email, signatur, text, bildtext, datum, tid, ip)
VALUES ('$undersida', '$sidnamn', '$sort', '$menytyp', '$rubrik', '$link', '$kat', '$fil_name', '$bilds', '$bildjustering', '$email', '$signatur', '$text', '$bildtext', '$datum', '$tid', '$REMOTE_ADDR')";

$pql = mysql_query($sql)or die(mysql_error());
header("location: $HTTP_REFERER");
?>
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-11, 01:18 #3
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
WizKid WizKid är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Apr 2004
Inlägg: 618
Skillnaden på -thumbnail och -resize är att bildprofiler plockas bort när man använder -thumbnail. Så vill man ha kvar dem så är det bara att byta ut -thumbnail mot -resize.
WizKid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-11, 02:50 #4
gsocs avatar
gsoc gsoc är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2007
Inlägg: 568
gsoc gsoc är inte uppkopplad
Mycket flitig postare
gsocs avatar
 
Reg.datum: Jun 2007
Inlägg: 568
Refererar till http://www.bytemycode.com/snippets/snippet/624/ om du har tillgång till gd, snabbt enkelt och bra.
gsoc är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-11, 10:17 #5
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Tack !

Jag testade det du skrev koala men det funkade inte, även om jag bytade till -resize enl. WizKid. (Warning: Division by zero)

jag kollade länken gsoc:

<code lang="Generic">
function resizeImage($file,$scale="",$width="",$height="")
{
// If they wish to scale the image.
if (isset($scale))
{
// Create our image object from the image.
$fullImage = imagecreatefromjpeg($file);
// Get the image size, used in calculations later.
$fullSize = getimagesize($file);
// If there is NOT a thumbnail for this image, make one.
if (!file_exists("tn_".$file))
{
// Create our thumbnail size, so we can resize to this, and save it.
$tnImage = imagecreatetruecolor($fullSize[0]/$scale, $fullSize[1]/$scale);
// Resize the image.
imagecopyresampled($tnImage,$fullImage,0,0,0,0,$fu llSize[0]/$scale,$fullSize[1]/$scale,$fullSize[0],$fullSize[1]);
// Create a new image thumbnail.
imagejpeg($tnImage, "tn_".$file);

// Clean Up.
imagedestroy($fullImage);
imagedestroy($tnImage);
// Return our new image.
return "tn_".$file;
}
// If there is a thumbnail file, lets just load it.
else
return "tn_".$file;
}
// If they want to force whatever size they want.
elseif (isset($width) && isset($height))
{
return "tn_".$file;
}
else
{
return false;
}
}
</code>

As im just looking over the code, it doesnt look like the force size works, i will revise this when i get a chance.

han nämner att force size inte funkar,,?

vad jag förstår så måste GD eller ImageMagick vara installerat på servern?

:P
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-13, 12:51 #6
vidirs avatar
vidir vidir är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 291
vidir vidir är inte uppkopplad
Medlem
vidirs avatar
 
Reg.datum: Jan 2004
Inlägg: 291
Kan man nu på något enkelt sätt sätta in en funktion i koden att "bilden är för stor", ha en maxgräns på 200 kb,?,,,, nu när jag inte har typ imagemagick tillgängligt.
vidir är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-08-29, 00:18 #7
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
haavi haavi är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2007
Inlägg: 3
Hej vidir,
Har du inte GD Library installerat då? Det ska tydligen följa med PHPs grundinstallation sedan 4.3.0 så det har du väl ändå? För att testa hur stora filerna som laddas upp kan du bara kontrollera att $_FILES['file']['size'] inte överskrider en viss storlek. Här är ett exempel:

Kod:
$max_file_size = 10485760;

if (isset($_POST['submit']) && $_FILES['image']['error'] == 0) {

$file_size = $_FILES['image']['size'];

if ($file_size > $max_file_size) {
	$error['filesize'] = 'Uploaded file size is more than 10MB';
}

if (count($error) == 0) {

/* kod för att ladda upp fil här */

} else {

/* för stor fil, visa felmeddelande här */

}
Här kommer även en funktion jag använt för att ändra dimensionerna på bilder. Parametern $name är namnet på den fil på servern du vill ändra storleken på, $target är namnet på den nya bilden med ändrade dimensioner och $new_w respektive $new_h är den bredd och höjd du vill att den nya bilden ska få i pixlar. Observera även att funktionen behåller bildens proportioner så det är förstås inte säkert att den genererade bilden får dessa exakta dimensioner både i bredd och höjd.

Kod:
	function resizeImage($name, $target, $new_w, $new_h) {
	
 $system = explode(".", $name);
	
 if (preg_match("/jpg|jpeg/",$system[1])) { $src_img = imagecreatefromjpeg($name); }
 if (preg_match("/png/",$system[1])) {$src_img = imagecreatefrompng($name); }
 
 $old_x = imageSX($src_img);
 $old_y = imageSY($src_img);
 
 if ($old_x > $old_y) {
 	$thumb_w = $new_w;
 	$thumb_h = $old_y*($new_h/$old_x);
 }
 
 if ($old_x < $old_y) {
 	$thumb_w = $old_x*($new_w/$old_y);
 	$thumb_h = $new_h;
 }	
 
 if ($old_x == $old_y) {
 	$thumb_w = $new_w;
 	$thumb_h = $new_h;
 }
 
 $dst_img = ImageCreateTrueColor($thumb_w,$thumb_h);
 imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 

 if (preg_match("/png/",$system[1])) {
 	imagepng($dst_img, $target); 
 } else {
 	imagejpeg($dst_img, $target); 
 }
 
 imagedestroy($dst_img); 
 imagedestroy($src_img); 
	}
haavi är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 13:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017