Pixels van een gelinkte file opvragen met php

Status
Niet open voor verdere reacties.

Bertus Bolknak

Gebruiker
Lid geworden
14 nov 2009
Berichten
51
Hallo, ik ben bezig met een soort van webbased overzichtspagina. Een interne webpagina, met maar een handjevol gebruikers, die daar wat info vanaf kunnen halen. Er is dus geen sprake van een openbare website met 1000-en bezoekers. Affijn genoeg achtergrond info. Mijn vraag:
Is het mogelijk om met php informatie op te vragen van een bestand, dat achter een html link zit?
Dus stel je voor een webpagina met daarop een soort van (Excel-achtige, zeg maar) overzichtstabel met een stuk of 5 colums en enkele tientallen rows (niks bijzonders dus). In kolom 1 staat steeds het volgnummer, en in kolom 2 staat steeds een bestandsnaam met een link (<a href= enzovoort). Zo zijn er nog wat onbelangrijke kolommen. Maar één kolom is (nu nog) leeg. Daar wil ik de "breedte x hoogte" in pixels in hebben van het gelinkte bestand uit kolom 2. En dat moet steeds opgevraagd worden bij het (re-)loaden van de pagina. Dat wil ik, omdat (onder de voeten van de webpagina, of hoe zeg je dat) de bestanden steeds aan wijziging onderhevig zijn (ze kunnen zelfs verdwijnen; het script moet daar tegen kunnen, niet in een error schieten bedoel ik). De pixel-info in de kolom moet met reload weer up to date gemaakt kunnen worden.
Voldoen zowel de breedte als de hoogte van de link aan een bepaalde waarde (3324 x 4584) dan wil ik de row waar de link in staat kenmerken, bijvoorbeeld een kleurtje geven met een css class. Of het lettertype van de maataanduiding bold maken of zo, dat maakt niet uit, als de row zich maar op een of andere manier onderscheidt.
Benieuwd of er onder het aanwezige intellect iemand is die een helpende hand kan bieden in de vorm van een blokje voorbeeldcode. Als het al mogelijk is natuurlijk. Ik begreep dat het met Javascript sowieso niet zou kunnen.

Groeten Bert.
 
Ik neem aan dat je de pagina zelf met php maakt, dus je hebt al een manier om alle bestanden netjes in een tabel te zetten. Met andere woorden je hebt al een harde link naar het bestand. Als dat zo is kun je simpelweg de gd library aanzetten en met getimagesize() de afmetingen bepalen.
PHP:
<?php
	//$img = "100_0464.jpg";
	$afm=getimagesize($img);
	$breedte = $afm[0];
	$hoogte = $afm[1];
	echo $breedte." x ".$hoogte;
?>
Nu de afmetingen bekend zijn kun je de andere acties eraan vastknopen met een if/else constructie.
 
O ja, vergeten te vragen. En wat als het bestandje niet gevonden wordt? Loopt het script dan niet vast? Ik doe zelf veel Applescript, en in Applescripttaal kennen we een zogenaamd try-block. Als iets niet lukt dat in een try-block staat dan wordt het gewoon overgeslagen en verder gegaan met de volgende scriptstappen. Heb je zoiets in php ook?


Hallo flitsflitsflits, bedankt voor de (zeer snelle) reactie, ik ga dit gelijk proberen.
Wat bedoel je eigenlijk met de "gd library aanzetten"? Als dit iets is wat op de webserver moet gebeuren, dan is het maar goed dat ik deze inpandig heb staan (het is wel een Apple met MAMP erop). Dit even als achtergrond info.

groeten Bert.

Ik neem aan dat je de pagina zelf met php maakt, dus je hebt al een manier om alle bestanden netjes in een tabel te zetten. Met andere woorden je hebt al een harde link naar het bestand. Als dat zo is kun je simpelweg de gd library aanzetten en met getimagesize() de afmetingen bepalen.
PHP:
<?php
	//$img = "100_0464.jpg";
	$afm=getimagesize($img);
	$breedte = $afm[0];
	$hoogte = $afm[1];
	echo $breedte." x ".$hoogte;
?>
Nu de afmetingen bekend zijn kun je de andere acties eraan vastknopen met een if/else constructie.
 
Laatst bewerkt:
Je kunt met file_exists kijken of een bestand bestaat.

Als je iets opent dat er niet is krijg je ws een E_NOTICE die je opzich wel af zou kunnen vangen.

GD staat meestal standaard geinstalleerd.
 
Link naar bestand buiten de site root

Dit werkt fantatstisch.

Misschien een moeilijke vraag: De gelinkte jpg bestanden bevinden zich buiten de site root. Kan ik ze dan ook vinden met php? Ik bedoel, als ze zich binnen de site root bevinden dan kan ik beginnen met "http://, enzovoort". Maar hoe omschrijf ik het pad naar een bestand buiten de site root? Of kan dat niet?

Bert.

Ik neem aan dat je de pagina zelf met php maakt, dus je hebt al een manier om alle bestanden netjes in een tabel te zetten. Met andere woorden je hebt al een harde link naar het bestand. Als dat zo is kun je simpelweg de gd library aanzetten en met getimagesize() de afmetingen bepalen.
PHP:
<?php
	//$img = "100_0464.jpg";
	$afm=getimagesize($img);
	$breedte = $afm[0];
	$hoogte = $afm[1];
	echo $breedte." x ".$hoogte;
?>
Nu de afmetingen bekend zijn kun je de andere acties eraan vastknopen met een if/else constructie.
 
Via http linken moet je sowieso niet doen omdat de serversoftware dan alles onnodig moet verwerken.

Het hangt af van de instellingen van php en het bestandssysteem waar het op draait: het makkelijkste is om het gewoon te proberen. Ik heb geen verstand van apple, maar op een windows machine kun je rechtstreeks een bestand opvragen met D:\mapnaam\bestand.jpg en in unix/linux via /directoryname/file.jpg
 
Het beste kun je relatief linken...

PHP:
file_get_contents ( '../plaatjes/bla.jpg' );

1 map omhoog gaan, plaatjes map openen, bla.jpg openen.

Dan maakt het ook niet uit als je de hele map structuur verplaatst naar een andere plek :)
 
Nee, maar als je de map zelf verplaatst kun je het overal aanpassen. ;)

Ik werk altijd met constanten met mapnamen/paden, zo ga je nooit de mist in.
 
Ja dat is inderdaad nog beter :)

PHP:
define ( 'IMAGE_MAP', '../images/' );

file_get_contents ( IMAGE_MAP . 'bla.jpg' );
 
Ja, maar dan weer precies niet met de ../. Gewoon een absoluut pad, zie je altijd waar je bezig bent.
 
Ik ben er al uit na een tijdje proberen. Bij Mac is het op z'n Unix, dus: Volumes/Macintosh HD/Folder/Folder/file.jpg
Weten ik dat ook weer. iedereen bedankt voor de reacties. Ik heb effe geen vragen meer hierover.

groeten Bert.

Via http linken moet je sowieso niet doen omdat de serversoftware dan alles onnodig moet verwerken.

Het hangt af van de instellingen van php en het bestandssysteem waar het op draait: het makkelijkste is om het gewoon te proberen. Ik heb geen verstand van apple, maar op een windows machine kun je rechtstreeks een bestand opvragen met D:\mapnaam\bestand.jpg en in unix/linux via /directoryname/file.jpg
 
Thumbnailtje extracten uit groot jpg bestand

Toch nog een vraagje over een linkje. Is er een of andere php truuk om op de webpagina heel snel een thumbnailtje te tonen van een gelinked bestand? De gelinkte files zijn allemaal 4500 x4500 pixels of daaromtrent (dus erg groot). Ik heb wel eens gehoord van een manier om met een of andere php functie een thumbnailtje daaruit te extracten en dat met een hovertje of zo te tonen . Zonder dat het beeldje opgeslagen wordt of hoeft te worden. Het beeldje zou dan max 200 pixels hoog of breed getoond moeten kunnen worden. Benieuwd of dit kan.

groeten Bert.
 
Je kunt ze beter even allemaal handmatig krimpen.

Het kan in HTML met de width en height tags, maar dan wordt er nog steeds een heleboel data (voor niks) naar de browser gestuurd, omdat het plaatje door de client gekrimpt wordt.

PHP kan het ook, maar tenzij je de image daarna ergens opslaat en vervolgens alsnog steeds de thumbnail opent ipv iedere keer de image te resizen is het heel zwaar voor je server.

Je kunt in PHP images resizen met behulp van de functie:
PHP:
imagecopyresized();

Als je de link volgt staan er voorbeeldjes van hoe het precies werkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan