login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Foto verkleinen

Offline Frederic - 03/05/2005 18:12
Avatar van FredericPHP ver gevorderde Ik heb volgend script om foto's te resizen (werkt)
  1. function verklein(image, maxWidth) {
  2. if (image.width > maxWidth) {
  3. image.width = maxWidth;
  4. }
  5. }

Dat werkt, als een foto nu breder is dan maxWidth gaat ie kleiner gemaakt worden. Maar stel nu: het is een hoge foto (en een zeer lage breedte), dan is je pagina ook messed up. Dus dacht ik: maak er zoiets van
  1. function verklein(image, maxWidth) {
  2. if (image.width > maxWidth) {
  3. image.width = maxWidth;
  4. }
  5. else if (image.height > maxWidth) {
  6. image.height = maxWidth;
  7. }
  8. else if (image.width = image.height AND image.width > maxWidth) {
  9. image.width = maxWidth;
  10. }
  11. }

Maar dan werkt het ineens niet meer, een foto die hoger is dan breder mag nog steeds tot aan de maxWidt gaan, terwijl die normaal maar maxWidth hoog mag zijn...

6 antwoorden

Gesponsorde links
Offline Thomas - 03/05/2005 18:49
Avatar van Thomas Moderator De hoogte heeft verder niets met de breedte te maken (in die zin dat de oorspronkelijke hoogte en breedte niet van elkaar afhangen), dus je moet dit niet doen met een elseif-statement, maar met aparte if-statements.
Als je de foto's op schaal wilt houden (de verhouding hoogte:breedte in stand wilt houden) moet je met schalen gaan werken. Je kijkt dan eerst naar de hoogte, en controleert of deze een bepaalde waarde overschrijdt, zoja, resize hoogte en breedte met schaal <hoogte van het plaatje> / <max hoogte van het plaatje> en controleer hierna de breedte van het plaatje op dezelfde manier (want het kan best zijn dat de (geschaalde) breedte de maximumbreedte nog steeds overschrijdt.
Offline Frederic - 03/05/2005 18:51
Avatar van Frederic PHP ver gevorderde Maar vreemd genoeg: als ik
  1. function verklein(image, maxWidth) {
  2. if (image.width > maxWidth) {
  3. image.width = maxWidth;
  4. }
  5. }

uitvoer, dan blijft de foto gewoon op schaal, dus hij wordt gewoon zowel in hoogte als in breedte geresised!
Offline MechaVore - 03/05/2005 18:52 (laatste wijziging 03/05/2005 18:53)
Avatar van MechaVore Gouden medaille

PHP gevorderde
  1. <?
  2. if (image.width > maxWidth)
  3. {
  4. image.width = maxWidth;
  5. }
  6. if (image.height > maxWidth)
  7. {
  8. image.height = maxWidth;
  9. }
  10. ?>

kan je het niet beter zo doen ?.

[edit]
Damn te laat 
Offline Thomas - 03/05/2005 18:54
Avatar van Thomas Moderator @Fréderic: vreemd - vul je dan verder geen height in ofzo ?
@Lightblade: dat kan natuurlijk ook, maar ik vraag me af of dat de schaal van het plaatje in tact laat - als ik op de reactie van Fréderic af zou moeten gaan zou ik zeggen dat jouw code voldoende is om het te laten werken 
Offline Frederic - 03/05/2005 18:55 (laatste wijziging 03/05/2005 19:13)
Avatar van Frederic PHP ver gevorderde Nee, ik vul wel geen hoogte in nee!

EDIT: die code werkt niet, want stel nu dat hij zowel groter is qua breedte en qua hoogte, dan gaat de foto wel messed up worden!

EDIT 2:
Dit is nu m'n code, maar welke image ook, hij krijgt altijd dezelfde hoogte als breedte (dus hij maakt er een vierkant van)
  1. function verklein(image, maxWidth) {
  2. if (image.width > image.height){
  3. if (image.width > maxWidth) {
  4. image.width = maxWidth;
  5. }
  6. }
  7. else{
  8. if (image.height > maxWidth)
  9. {
  10. image.height = maxWidth;
  11. }
  12. }
  13. if (image.width = image.height){
  14. if (image.width > maxWidth) {
  15. image.width = maxWidth;
  16. }
  17. }
  18. }
Offline Thomas - 03/05/2005 19:44
Avatar van Thomas Moderator Euh, = is een assignment (toekenning), == vergelijkt waarden.

  1. function verklein(img, maxWidth, maxHeight) {
  2. // controleer hoogte
  3. if(img.height > maxHeight) {
  4. var schaal = img.height / maxHeight;
  5. img.height = maxHeight;
  6. img.width = Math.round(img.width / schaal);
  7. }
  8.  
  9. // controleer breedte
  10. // hier wordt dus ook gekeken of het plaatje na
  11. // verkleining in de hoogte (en breedte) nog te breed is
  12. // zodat de uiteindelijke hoogte en breedte binnen respectievelijk
  13. // maxHeight en maxWidth vallen
  14. if(img.width > maxWidth) {
  15. var schaal = img.width / maxWidth;
  16. img.width = maxWidth;
  17. img.height = Math.round(img.height / schaal);
  18. }
  19. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.235s