Archief - PHP: resizer

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

exxhal

Legacy Member
Hoi,
ik zit met een probleem.:wtf:

Foto's welke ik upload via een php script tot 2Mb lukken vlot om deze te resizen.
Doe ik een upload van meer dan blokkeert de boel.
Vermits de nieuwste foto toestellen enkel zulke foto's afleveren is het echt geen doen.
Ik weet niet echt waar ik de fout moet zoeken.
Ik ga er dan ook vanuit dat ik eerst de foto op de server upload en dan pas resize.
Volgens mij begint hij reeds te resizen voordat de foto volledig op de server staat.
HTML:
if(isset($_FILES['bestand'])) {
    //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
    if($_FILES['bestand']['size'] > 5024000) {
        echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>5024000 = 5Mb</b>";
    } else {
        //kijken of het bestand wel een gif, png of jpg is
        if($_FILES['bestand']['type'] == "image/gif" || $_FILES['bestand']['type'] == "image/png"  || $_FILES['bestand']['type'] == "image/pjpeg" || $_FILES['bestand']['type'] == "image/jpeg") {
            //kijken of er een nieuwe naam aan het bestand is gegeven
            if(empty($_POST['sofie'])) {
                $naam = $subjecta . $x;
				$x = strrchr($_FILES['bestand']['name'], ".");
                $naam = $subject . $x;
				include("***/****.php");
 mysql_connect('localhost',''.$dbusername.'',''.$dbpassword.'');
mysql_select_db(''.$dbname.'') or die (mysql_error());
mysql_query("UPDATE **** SET foto1 = '".$naam."' WHERE passw = '".*****."' ");
            } 
            //het bestand uploaden met de nieuwe of oude naam
            move_uploaded_file($_FILES['bestand']['tmp_name'], "./images/" . $naam);
            
			
			$max_breedte  = "550";  
			$bron = imagecreatefromjpeg("./images/".$naam) or die ("Jpg probleempje");
$b_breedte = imagesx($bron); // Bron breedte 
$b_hoogte = imagesy($bron); // bron hoogte

//verhouding berekenen
$verhouding = $b_breedte / $max_breedte;

//breedte berekenen en afronden
$nieuw_breedte = round($b_breedte / $verhouding);

//hoogte berekenen en afronden
$nieuw_hoogte = round($b_hoogte / $verhouding);

if ($b_breedte > $max_breedte) {
$nieuw_jpg = imagecreatetruecolor($nieuw_breedte ,$nieuw_hoogte) or die ("Probleem met maken van plaatje jpg");
imagecopyresampled($nieuw_jpg, $bron, 0, 0, 0, 0, $nieuw_breedte, $nieuw_hoogte, $b_breedte, $b_hoogte);
Imagejpeg($nieuw_jpg,"./images/".$naam,80); //80 is jpg kwaliteit
} // einde resizen

Iemand ervaring.

frenzal

Legacy Member
Grotere foto's vereisen meer geheugen om te resizen dus ge moet de php instelling memory_limit verhogen in php.ini of misschien met .htaccess met goedkopere hosts kan het wel zijn dat je dit niet mag wijzigen..

exxhal

Legacy Member
The memory limit in php.ini staat op 16MB.
en kan niet veranderd worden.
Maar ik heb reeds een probleem bij 3Mb

exxhal

Legacy Member
Als ik lang genoeg wacht doet hij de upload wel maar bij het resizen blokkeert hij blijkbaar.

Dus de upload is ok , juiste naam etc. maar hij past de jpg niet aan met de resizer.

frenzal

Legacy Member
een foto van 3mb is niet niks natuurlijk, wat is dat dan een 6 megapixel foto?
Ik geloof dat je ongeveer aantal pixels * 4 moet doen voor nodige geheugen te berekenen ongeveer. Dan zit je al snel aan 24MB voor een 6 megapixel foto

exxhal

Legacy Member
mhh ik zie dat hij bij 1.7 mb ook al moeilijk doet.
Het lijkt mij wanneer de foto te groot is in afmeting zelf dat het moeilijk is om deze terug te brengen naar het gewenste formaat.

exxhal

Legacy Member
ja zoals ik al dacht, heb nu een pic van nog geen 1Mb geupload met de volgende afmeting 2500x1700 en ik krijg een interne server fout 500.

welp

Legacy Member
Je hebt ini_set('upload_max_filesize', "..M"); en ini_set('memory_limit', "..M");

Het is niet omdat je foto maar 3 mb groot is dat u memory limit dan maar 3 mb nodig heeft. Memory limit is het totale interne geheugen dat gespendeerd mag worden aan het uitvoeren van het script. Dat wil dus zeggen hoeveel mb hij mag gebruiken om te rekenen.

Zet da eens op 100 mb en het zal al beter gaan.

iamdesign

Legacy Member
idd, je moet rekening houden dat hij een temp file maakt enzo, ik zet het steeds op 100MB, anders ook altijd probleme daar mee gehad :)

exxhal

Legacy Member
Blijkbaar een probleem bij one.com
Nu ja, niet echt een probleem dat ik giga foto's upload maar wel dat ik dan giga foto's te zien krijg op mijn website.

Ik gebruik de slimbox,Lightbox.
Nu staat er dit stukje tussen het java script.

HTML:
var Lightbox = {

	init: function(options){
		this.options = $extend({
			resizeDuration: 400,
			resizeTransition: false,	// default transition
			initialWidth: 250,
			initialHeight: 250,
			animateCaption: true,
			showCounter: true
		}, options || {});

Zorgt dit niet voor de grote van de foto of zo?
Kan ik daar iets aanpassen zoals je kan doen in css om de foto kleiner weer te geven dan hij eigenlijk is.

Bram

Legacy Member
iets efficienter zou zijn om met php uw afbeelding wa kleiner te maken... tis redelijk eenvoudig om een class te schrijven da da doet, dan kunt ge foto's uploaden gelijk ge wilt, ge resizet ze gewoon allemaal met php tot een max hoogte/breedte...
ge zou natuurlijk ook img#lightboxImage { width: 500px} ofzo kunnen gebruiken, maar da's nie echt efficient... Ie gaat nog altijd uw volledige afbeelding inladen...

exxhal

Legacy Member
SveltestSword zei:
iets efficienter zou zijn om met php uw afbeelding wa kleiner te maken... tis redelijk eenvoudig om een class te schrijven da da doet, dan kunt ge foto's uploaden gelijk ge wilt, ge resizet ze gewoon allemaal met php tot een max hoogte/breedte...
ge zou natuurlijk ook img#lightboxImage { width: 500px} ofzo kunnen gebruiken, maar da's nie echt efficient... Ie gaat nog altijd uw volledige afbeelding inladen...

Ja dat lijkt nu net het probleem. De rekenkracht van mijn hoster is te klein om +1.5 MB foto's te resizen.
Of gebruik ik een slecht script in PHP ?

Bram

Legacy Member
is u host one.com? Daar hemmek persoonlijk nog niets van slecht gehoord alst neer komt op GD functies en dergelijke... Kdenk da het dus effectief aan u host ligt en niet aan u script.

exxhal

Legacy Member
Yep one.com. k'heb al beter gehad maar ook slechter.
welke hoster kan ik dan best nemen om mijn foto's goed te kunnen resizen?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan