Итак, я делаю генератор мемов, и у пользователя есть возможность ввести ссылку на изображение ИЛИ загрузить локальный файл из хранилища.
Вот мой html для загрузки ссылки / локального хранилища.
<div class="Main_Grid_Item Link_Upload_Div">
<form action="/" method="POST">
<p>Enter Image Link:</p>
<input class="Image_Input" type="text" name="Link_Url" placeholder="Image Link"><br>
<button class="Image_Submit" type="submit" name="button">Submit Image</button>
</form>
</div>
<div class="Main_Grid_Item File_Upload_Div">
<form>
<p>Upload Image:</p>
<input id = "UploadOutput" class = "Upload_Output" type="text" placeholder="Image Name After Upload" readonly><br>
<label for="ImgStorage" class="Image_Upload_Label">Upload Image</label>
<input type='file' id="ImgStorage" />
</form>
<br>
</div>
И специально для загрузки файлов это мой javascript, который в основном был скопирован из этого потока стека: Javascript загрузка и отображение изображения
function readURL(input) {
//if picture exists then create a new FileReader
if (input.files && input.files[0]) {
var reader = new FileReader();
//the image with specified id gets url
reader.onload = function (e) {
$("#blah").attr("src", e.target.result);
};
//reads picture
reader.readAsDataURL(input.files[0]);
}}
Просто чтобы уточнить, что ввод ссылки / загрузка изображения ДЕЙСТВУЕТ в обоих направлениях, и изображение правильно отображается на экране. Проблема, с которой я столкнулся, заключается в том, что я делаю «снимок экрана» с холстом html 2.
Это мой javascript код для создания снимка экрана с помощью html2canvas
//takes screenshot of Meme with overlay
$("#Save_Meme_Button").on("click", memeScreenShot);
function memeScreenShot() {
html2canvas(document.querySelector(".Main_Image_Div")).then((canvas) => {
document.body.appendChild(canvas);
});
}
Это code по сути делает "снимок экрана" изображения, а затем показывает его под сайтом. Проблема в том, что когда я загружаю изображение с URL-адресом, при «скриншоте» изображения иногда получается пустое изображение.
Однако, если я go перешел на URL-адрес изображения, загрузите изображение в локальное хранилище, а затем используйте другой вариант для загрузки изображения из локального хранилища, изображение успешно сохраняется вместо отображения пустого изображения.
Есть ли причина, по которой пустой снимок экрана изображения иногда появляется при загрузке по ссылке, сравниваемой к загрузке из локального хранилища? Я немного просмотрел документы о испорченном холсте, но я не уверен, что это проблема, потому что я не получаю ошибок в консоли при загрузке / сохранении изображения: https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#: ~: text = Security % 20and% 20tainted% 20canvases, -Потому что% 20the% 20pixels & text = As% 20soon% 20as% 20you% 20draw, an% 20exception% 20to% 20be% 20thrown .
Я получаю сообщение об ошибке, когда изображение загружается пустым, когда я включаю опцию useCors. Я думаю, поэтому опция ссылки не работает, а локальное хранилище работает введите описание изображения здесь
Код, который отображает изображение
<div id = "MainImageDiv" class="Main_Image_Div">
<% if(typeof imgUrl !== 'undefined'){ %>
<img id="blah" src=<%= imgUrl %> class="Main_Image" /></img>
<% } else{ %>
<img id="blah" src="/images/stonks.png" class="Main_Image" /></img>
<% } %>
<p id="TopTextPar" class="Top_Text"></p>
<p id="BottomTextPar" class="Bottom_Text"></p>
</div>