[php] GD resize zorgt voor border

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik zit met een afbeelding die ik door php wil laten resizen. Hierbij onstaat een border om de afbeelding heen die niet gewenst is. Wanneer ik de afbeelding nog verder verklein, valt de border weer weg. Maar dat neemt niet weg dat in het eerste geval de rand wel storend is en ik deze niet wil.

Voorbeeldje:
Afbeeldingslocatie: http://juriansluiman.nl/tmp/Normal.png
En na resizen (klein beetje, van 800px breed naar 740px)
Afbeeldingslocatie: http://juriansluiman.nl/tmp/Crop.png

Wellicht moet je even de afbeelding in een groot venster bekijken zodat je de border ziet, maar de grote vraag is dus hoe je dit weg kan krijgen. Eigenlijk doe ik niets speciaals met gd.
Ik maak met imageCreateFromPng() een afbeelding identifier. Dan maak ik een nieuwe thumbnail met de juiste grootte via imageCreateTrueColor() en deze kopieer ik met imageCopyResampled(). met imagePng() schrijf ik het nieuwe bestand vervolgens weg.

Zijn er parameters te tunen waardoor deze effecten niet optreden? Het is zeer vreemd, omdat de buitenkant wit is. Dus 2px wit resizen naar 1px, lijkt me dat dit wit moet zijn. Toch is het rond de rand niet zo (sterker nog: bij veel, maar niet alle (!) afbeeldingen gebeurt dit).

Een tip: als jij gaat zoeken naar php+gd+image+border krijg je alleen tutorials hoe je een border plaatst om een afbeelding 8)7

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Kan iemand anders de door de TS genoemde "border" wél vinden en ben ik compleet blind offeh? :o Verrekte TN-schermen :X

[ Voor 12% gewijzigd door Osiris op 25-05-2010 17:49 ]


Acties:
  • 0 Henk 'm!

  • B0rf
  • Registratie: Oktober 2008
  • Laatst online: 03-10-2024
Dit komt waarschijnlijk doordat je originele plaatje ook een randje heeft, waarbij de pixels halftransparant (nouja, 5% transparant) zijn. In je browser zie je dit niet, omdat deze een witte achtergrond gebruikt. Als je dit op een nieuw gd plaatje kopieert (die standaard zwart is), zal 5% van dat zwart erdoorheen komen en krijg je een grijs randje. Probeer het plaatje eerst 'leeg' te maken door het nieuwe plaatje eerst te fillen met een transparante kleur (gebruik imagecolorallocatealpha), en kopieer hierna pas het oude plaatje eroverheen. Vergeet ook niet om iets als imagesavealpha gebruiken.

[ Voor 6% gewijzigd door B0rf op 25-05-2010 17:41 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Osiris schreef op dinsdag 25 mei 2010 @ 17:38:
Kan iemand anders de door de TS genoemde "border" wél vinden en ben ik compleet blind offeh? :o
Ik heb ook zitten staren; had TS een wat duidelijker voorbeeld gegeven (of een dikke rode pijl erbij gezet) dan had 't veel tijd gescheeld. Anyway, wat B0rf zegt dus.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Daarom had ik ook gezegd, neem de afbeelding even fullscreen :p Dan krijg je namelijk zoiets te zien:
Afbeeldingslocatie: http://juriansluiman.nl/tmp/InBrowser.png

Maar goede tip van B0rf. Ik ga even kijken of dit het probleem zou oplossen :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
mithras schreef op dinsdag 25 mei 2010 @ 18:01:
Daarom had ik ook gezegd, neem de afbeelding even fullscreen :p
Dan nog is 't verdomde lastig om die "bijna wit" randjes te zien; de rode pijlen helpen een béétje...
Het verschil: #ffffff tegen #f2f2f2... Op een "gewoon" scherm moet je dan behoorlijk staren.

[ Voor 14% gewijzigd door RobIII op 25-05-2010 18:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • B0rf
  • Registratie: Oktober 2008
  • Laatst online: 03-10-2024
Tja 't zijn van die gemene dingetjes die niet opvallen, ook in 't origineel valt 't niet op doordat 't maar 5% transparant is. Heb in ieder geval niet heel erg lang hoeven staren op de lijntjes. Als het overigens niet lukt met die transparantie, is 't misschien ook 'n idee om in 't origineel een gewoon kleurtje achter het plaatje te plakken, zodat je van de transparantie af bent.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
B0rf schreef op dinsdag 25 mei 2010 @ 18:10:
Tja 't zijn van die gemene dingetjes die niet opvallen, ook in 't origineel valt 't niet op doordat 't maar 5% transparant is. Heb in ieder geval niet heel erg lang hoeven staren op de lijntjes. Als het overigens niet lukt met die transparantie, is 't misschien ook 'n idee om in 't origineel een gewoon kleurtje achter het plaatje te plakken, zodat je van de transparantie af bent.
Hoewel de imageColorAllocateAlpha() wel de meest fout-bestendige optie is, werkt het inderdaad ook om in het origineel de rand volledig wit te maken. Deze plaatjes komen uit een programma rollen en ik wist dus niet van een transparantie af :)

Ik zal op een later moment nog kijken of ik mijn automatische thumbnailer kan herschrijven zodat er geen zwart als basis wordt gebruikt, maar voorlopig werkt dit quick & dirty best goed.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik zie de border anders meer dan duidelijk hoor :?

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Black Hawk
  • Registratie: Oktober 2003
  • Laatst online: 08-01 21:48
Guillome schreef op woensdag 26 mei 2010 @ 15:00:
Ik zie de border anders meer dan duidelijk hoor :?
En anders ik wel (@iiyama E2607WS)

Maar ter zake: ik denk, zoals hierboven al gezegd, dat er iets in het originele plaatje zit.
Misschien dat de TS een andere afbeelding wil proberen waarvan hij zeker weet dat 'ie een witte rand heeft. Desnoods zelf even wit maken. Dan kun je dat in ieder geval uitsluiten.

Wie nooit tijd heeft, kan er niet mee omgaan.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Black Hawk schreef op zaterdag 12 juni 2010 @ 17:15:
[...]

En anders ik wel (@iiyama E2607WS)

Maar ter zake: ik denk, zoals hierboven al gezegd, dat er iets in het originele plaatje zit.
Misschien dat de TS een andere afbeelding wil proberen waarvan hij zeker weet dat 'ie een witte rand heeft. Desnoods zelf even wit maken. Dan kun je dat in ieder geval uitsluiten.
mithras schreef op dinsdag 25 mei 2010 @ 18:17:
[...]
Hoewel de imageColorAllocateAlpha() wel de meest fout-bestendige optie is, werkt het inderdaad ook om in het origineel de rand volledig wit te maken. Deze plaatjes komen uit een programma rollen en ik wist dus niet van een transparantie af :)

Ik zal op een later moment nog kijken of ik mijn automatische thumbnailer kan herschrijven zodat er geen zwart als basis wordt gebruikt, maar voorlopig werkt dit quick & dirty best goed.
Probleem was al opgelost dus :) In origineel zat een alpha in de rand. Geen idee hoe precies, maar het veroorzaakte wel het probleem. Nu is het opgelost door het origineel te fixen, maar een imageColorAllocateAlpha() had ook gekund.

Acties:
  • 0 Henk 'm!

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 23:46
RobIII schreef op dinsdag 25 mei 2010 @ 18:02:
[...]

Dan nog is 't verdomde lastig om die "bijna wit" randjes te zien; de rode pijlen helpen een béétje...
Het verschil: #ffffff tegen #f2f2f2... Op een "gewoon" scherm moet je dan behoorlijk staren.
Ik zie ze hier _duidelijk_ op mijn Acer AL1716... TN paneltje

There is no replacement for displacement!


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
_eXistenZ_ schreef op zaterdag 12 juni 2010 @ 21:28:
[...]


Ik zie ze hier _duidelijk_ op mijn Acer AL1716... TN paneltje
Zullen we stoppen met melden wie de borders wel en wie ze niet ziet? Het voegt niets toe aan de discussie en inmiddels is het wel duidelijk waar ze staan. Ik weet niet of de afbeeldingen inmiddels vervangen zijn maar thuis op mijn SyncMaster 930BF zie ik ze wel terwijl ik ze op 't werk op exact hetzelfde scherm met moeite zag. Maar toen stonden er ook nog geen rode pijlen bij. Anyhow; laten we stoppen met die nutteloze meldingen a.u.b., en zéker als je verder niets toevoegt. En al helemaal 2½ week na dato.

[ Voor 5% gewijzigd door RobIII op 12-06-2010 21:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 03-07 23:56

Engineer

Software

.

[ Voor 99% gewijzigd door Engineer op 13-10-2018 17:09 ]

Pagina: 1