rekenen in php

Status
Niet open voor verdere reacties.

Jeboem

Gebruiker
Lid geworden
18 jan 2002
Berichten
178
Hoi allemaal,

Ik heb even een vraag over het rekenen in php
Het gaat hier om het resizen van afbeeldingen zonder dat de foto vervormt. Nou wil ik bij voorbeeld dat de hoogte van een foto niet groter wordt dan 400 pixels maar als de foto groter is moet ie hem dus kleiner maken naar 400 pixels dit lukt wel, maar dan vervormt de foto, nu moet dus het aantal pixels dat php in de hoogte heeft verkleint ook in de breedte verkleint worden. dus moet php een rekensom maken. ik heb bijvoorbeeld een foto van Hoogte 800 en breedte 600 pixels. nou moet ie dus een rekensom maken.
Dit moet die som dus ongeveer worden:

400 = 800 - ?

Die vraag teken is dus niet bekent. hoe kan ik er achterkomen wat die waarde is van het vraagteken?
Als ik die waarde weet van het vraag teken kan ik die waarde ook van de breedte aftrekken en heb ik een foto die verkleint is en niet is vervormt (hoop ik)

Wie kan mij helpen of heeft een beter idee voor het resizen van foto's??

met vriendelijk groet,
Jeboem
 
Waarom moeilijk doen als het makkelijk kan?
Je kunt toch ook aangeven dat de huidige verhoudingen behouden blijven? In mijn engelstalige versie van photoshop 5 heet dat "constrain proportions".
En anders:
van hoogte 800 naar 400 is delen door 2
dus breedte ook delen door 2...
 
hoi madmad,

bedankt voor je antwoord maar helaas ik heb er niks aan. constrain proportions is geen funtie in php en php heeft geloof ik geen gelijkwaardige functie als dat. Verder weet ik ook wel dat 800:2 400 is. maar ik moet dat niet uitrekenen. het php script moet dit uitrekenen. als mensen foto's uploaden dan moet die foto automatisch gerisizes't worden. en dan heb je foto's van verschillende grotes vandaar dat php dat zelf moet doen.

greetz Jeboem
 
PHP:
<?
$plaatje = "http://www.jouwdomein.nl/plaatje.jpg";
$eigenschappen = getimagesize($plaatje);
$hoogte = $eigenschappen[1];
$breedte = $eigenschappen[0];
echo "<img src=\"" . $plaatje . "\" border=\"0\"";
  if($hoogte > 400)
  {
  echo " height=\"400\"";
  }
echo ">";
?>
 
Hier ook bedankt voor 't script JPeetje! Is een handig script! :thumb:
*JPeetje to tha rescue* :p
 
niet om af te z**ken of zo...maar die site lijkt me dus echt héél slecht....
ik vind die quizjes altijd wel interessant, en heb die mysql quiz ff bekeken....maar daar staan me dingen in geschreven :rolleyes: ... als je het op die manier gaat leren dan kun je het meteen wel schudden...
belgische sites...:p
 
Laatst bewerkt:
Inderdaad. :/

3.Hoe voeg je een naam toe in een kolom waar id gelijk is aan zes?
a. Insert into tabel (naam) VALUES ('$naam') where id = 6
b. Insert where id = 6 ('$naam') VALUES ('naam') into tabel
c. Insert into tabel ('$naam') VALUES ('naam') where id = 6

Da's zover ik weer toch update tabel set naam='".addslashes($naam)."' where id=6 >_>

En ze lijken nogal 'teveel' PHP in de niet-PHP tutorials te gebruiken, de MySQL tutorials zijn ook in feite allemaal PHP functies.
 
vraag 3...vraag 4....vraag 5....vraag 5 is de ergste..
5.Hoe verwijder je een volledige tabel ?
a. Delete tabel
b. Delete * from tabel
c. Delete all from tabel
tabellen verwijderen gebeurt met DROP TABLE...niet Delete table..
als je delete gebruikt, verwijder je rijen...en kun je een tabel legen...maar verwijderen ? ik denk 't niet :rolleyes:
btw, zelfs de code voor een tabel legen doen ze fout:
PHP:
mysql_query("DELETE FROM tabelnaam");
zo moet hij wel....niet een van de manieren die zij daar hebben staan.....:rolleyes:
 
Jongens jongens we dwalen af. Jeboem, je hebt nog niet laten blijken dat je de oplossing hebt, maar volgens mij begrijpt JP je ook verkeerd. Om geen vervormingen te krijgen is een factor nodig, want het is niet gewoon zo dat als de hoogte 2 x kleiner wordt de breedte dat ook doet. Ik heb een script in mekaar gezet die de hoogte + de breedte terugbrengt naar een gezet maximum.

PHP:
<?php

$plaatje = "http://www.jouwdomein.nl/plaatje.jpg";
$prop = getimagesize($plaatje);
$h = $prop[1];
$b = $prop[0];

//De maximale hoogte en breedte mogen niet groter zijn dan deze waarden:
$maxh = 400;
$maxb = 400;	//om geen vervorming te krijgen moet je uitvinden met welke factor de breedte verkleint moet worden als je de bovenkant 2 keer zo klein maakt!

/*
	Ons bestand in deze comment is een lekker onrealistisch plaatje.
	We nemen de dimenties 612 x 345 (h x b). Dit om verwarring te voorkomen
	dat we gewoon delen door 2 doen (800 / 2 = 400, das lekker makkelijk maar
	aangezien we niet altijd weten wat de afmetingen zijn kunnen we niet gewoon
	delen door 2)
*/

if($h > $maxh) //als de hoogte groter is dan de maximale hoogte...
{
  $h_diff = $h - $maxh;	//De truc: we hebben geleerd op school dat als we een getal niet weten, we terug moeten rekenen; 2 = 6 - ? (6 - 2 = 4 dus ? = 4)
	$new_h = $h - $h_diff;		 //Hier doen we dus het verschil tussen de hoogte en de max hoogte van de hoogte af zodat hij voor de hoogte op het maximum komt
	$h = $new_h;	//Tenslotte kopieren we die waarde naar de originele hoogte, zodat we geen ifjes meer hoeven te doen..
}
elseif($b > $maxb)
{
  $b_diff = $b - $maxb;
	$new_b = $b - $b_diff;
	$b = $new_b;
}

echo "<img src=".$plaatje." height=".$h." width=".$b." alt=plaatje>";

?>

Die omrekenfactor moet je dus even vinden.
 
Nou ik heb het in middels op gelost...iedereen nog bedankt daarvoor!!!
Zal het script nog ff posten voor de belangstellenden. Dit script kun je gebruiken bv voor het uploaden van foto's die automatisch geresized worden zonder dat de foto vervormt. Tevens wordt er een copyright toegevoegt. Ik hoop dat jullie er wat aan hebben en anders hoor ik het wel als er problemen zijn.

By the way Sorry voor de late post :(

PHP:
if ($uploadname=='') { } else {			

$fotoname = "fotos/".$uploadname;	
// Naam van het plaatje (zonder pad omdat het later nog eens gebruikt wordt) 


// Haal de afmeting gegevens van het plaatje 
$aData = getimagesize($fotoname); 
$iSizeX = $aData[0]; 
$iSizeY = $aData[1]; 
$SizeX = $aData[0]; 
$SizeY = $aData[1]; 

if ($SizeX>400) { 
$SizeX = 400; 
$tel = $SizeX / $aData[0]; 

$SizeY = $tel * $aData[1]; 

if ($SizeY>400) { 
$SizeY = 400; 
$tel = $SizeY / $aData[1]; 

$SizeX = $tel * $aData[0]; 
} 
}elseif ($SizeY>400) { 
$SizeY = 400; 
$tel = $SizeY / $aData[1]; 

$SizeX = $tel * $aData[0]; 

if ($SizeX>400){ 
$SizeX = 400; 
$tel = $SizeX / $aData[0]; 

$SizeY = $tel * $aData[1]; 
} 


}else{ 
$SizeX = $aData[0]; 
$SizeY = $aData[1]; 
} }



// Maak een nieuw truecolor-plaatje van de gewensde afmeting 
$imgDest = imagecreatetruecolor($SizeX, $SizeY); 

// Open het bestaande plaatje 
$imgSrc = imagecreatefromjpeg($fotoname); 

// Copieer het bestaande plaatje naar het nieuwe plaatje (resizen) 
imagecopyresampled($imgDest, $imgSrc, 0, 0, 0, 0, $SizeX, $SizeY, $iSizeX, $iSizeY); 

// Haal de afmeting gegevens van de copyright notice 
$aData = getimagesize('copyright_img.png'); 
$iCopyrightSizeX = $aData[0]; 
$iCopyrightSizeY = $aData[1]; 

// Open het copyright notice plaatje 
$imgCopyrightSrc = imagecreatefrompng('copyright_img.png'); 

// Copieer de copyright notice over het nieuwe plaatje heen 
imagecopyresampled($imgDest, $imgCopyrightSrc, 0, 0, 0, 0, $iCopyrightSizeX, $iCopyrightSizeY, $iCopyrightSizeX, $iCopyrightSizeY); 

// Schrijf het nieuwe plaatje als een JPG in de map 'verkleind' 
imagejpeg($imgDest, 'verkleind/'.$fotoname ,95); 
unlink($fotoname);





?>

greetz Jeboem
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan