Ik krijg steeds het originele plaatje terwijl ik een vierkant plaatje verwacht.
Meestal doe ik iets fout, onvoldoende of niet; maar deze keer zie ik het niet (meer).
Een beetje hulp kan ik dan ook goed gebruiken.
Dank op voorhand.
Mijn volgende stap is om het plaatje dat nu in het canvas zit naar de server te uploaden.
1. Ik moet de inhoud van het canvas omvormen naar een blob
2. Vervolgens het blob in een file plaatsen
3. de file uploaden naar de server.
Stukjes en beetjes vind ik op SO, maar ik mis het hele 'plaatje', het overzicht.
Wil iemand me in de goeie richting wijzen?
Dit levert me een file met het gecropte en verkleinde plaatje in:
~/Downloads/cropped-image.png
Nu zoek ik naar een mogelijkheid om die file in:
<input type="file" id="upload" name="upload"
te krijgen zonder dat de bezoeker opnieuw op een knop moet drukken.
Is het in javascript mogelijk om een pointer te wijzigen die ongetwijfeld 'ergens' in de ' <input type="file"' instructie verborgen zit. Ik denk het eigenlijk niet omdat dit een veiligheidslek van mega orde zou zijn.
Maar... hoe dan wel?
Je kan zeker niet de data in een input:file steken. Dit zou moeten impliceren dat je een bestand op de locale computer kunt schrijven. VEILIGHEID=0
?Onbekende gebruiker
04-09-2022 09:42
gewijzigd op 04-09-2022 09:44
Daarvoor heb je het DataTransfer object nodig in JavaScript.
canvas.toBlob(function(blob) {
let file = new File([blob], 'img.jpg',
{type: 'image/jpeg', lastModified: new Date().getTime() } ),
transfer = new DataTransfer();
transfer.items.add(file);
let input = document.getElementById('<id_van_je_input_file_element>');
input.files = transfer.files;
}, 'image/jpeg', 0.9);
@Ad Fundum,
Dank! Ik heb het nog niet uitgewerkt, maar het lijkt vreselijk veel op hetgeen ik bedoel.
Als ik het ga gebruiken zie ik het wel. Ik vraag me nog af of de oorspronkelijke file dan ook uit het <input type="file" ...> element is verdwenen/overschreven.
De HTML Drag and Drop API, heb ik heel niet aan gedacht; nogmaals dank.
Heel knap dat je dit hebt gevonden. In de documentatie kan ik geen method add() van het items object ontdekken. Maar, zoals vaak, ik kijk misschien niet goed.
[size=xsmall]Toevoeging op 04/09/2022 17:01:06:[/size]
[size=xsmall]Toevoeging op 04/09/2022 17:05:18:[/size]
Dit werkt! Helemaal geweldig.
Ook de oude inhoud van <input type="file" ...> is overschreven.
Heel clean, nogmaals dank!