Вам нужно подождать, пока ваше изображение загрузится, прежде чем вы сможете нарисовать его на холсте.
Для этого просто используйте обработчик события load
вашего элемента :
// create a new image
var img = new Image();
// declare a function to call once the image has loaded
img.onload = function(){
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var context = canvas.getContext('2d');
context.drawImage(img, 0,0);
var dataURL = canvas.toDataURL();
// now you can do something with the dataURL
doSomething(dataURL);
}
// now set the image's src
img.src = "http://somerandomWebsite/picture.png";
Кроме того, для холста 'context.toDataURL()
и context.getImageData
для работайте правильно, вы должны получить свой ресурс изображения в соответствии с кросс-оригинальным способом , в противном случае холст «испорчен», что означает, что любой метод получения данных с пикселями будет заблокирован.
img.crossOrigin
на "use-credentials"
. img.crossOrigin
на "anonymous"
. Nota Bene : Сервер CORS отправляется сервером, а атрибут cross-origin
сообщает, что вы хотите использовать CORS для получения данных изображения, и вы не сможете обойти его, если сервер установлен неправильно. Кроме того, некоторые UserAgents (IE & amp; Safari) до сих пор не реализовали этот атрибут.
Edge Case : Если некоторые из ваших изображений находятся на вашем сервере, а некоторые из них соответствуют требованиям CORS один, тогда вы можете захотеть использовать обработчик события onerror
, который должен срабатывать, если вы установите атрибут cross-origin
на "anonymous"
на сервере без CORS.
function corsError(){
this.crossOrigin='';
this.src='';
this.removeEventListener('error', corsError, false);
}
img.addEventListener('error', corsError, false);
Откройте командную строку с повышенными правами (запустите cmd as administrator). Запросите свой реестр для доступных шрифтов TrueType на консоли:
REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"
Вы увидите вывод, например:
0 REG_SZ Lucida Console
00 REG_SZ Consolas
936 REG_SZ *新宋体
932 REG_SZ *MS ゴシック
Теперь нам нужно добавить шрифт TrueType, который поддерживает символы, которые вам нужны, как Courier New, мы делаем это, добавляя нули к имени строки, поэтому в этом случае следующий будет «000»:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"
Теперь мы реализуем поддержку UTF-8:
REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f
Установите шрифт по умолчанию на «Courier New»:
REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f
Установите размер шрифта до 20:
REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f
Включите быстрое редактирование, если вы например:
REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f
Также из UTF-16 на cmd.exe
Open/run cmd.exe
Click on the icon at the top-left corner
Select properties
Then "Font" bar
Select "Lucida Console" and OK.
Write Chcp 10000 at the prompt
Finally dir /b
Быстрый и удобный способ сделать это в проводнике.
1. Open the Explorer window. 2. Traverse to the top level of directory where you want to find. 3. On the upper right corner, there is a find field.
Попробуйте следующее:
powershell.exe -NoExit /c "chcp.com 65001"
Кто использует msysgit:
powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"
Не забудьте изменить шрифт окна на TrueType шрифт с поддержкой UTF-8 («Lucida Console «) [/ д2]
Установка кодовой страницы в UTF-8 с помощью команды chcp 65001 должна помочь вам правильно распечатать содержимое файла в оболочке (с помощью cmd.exe). Это не будет работать для каталогов, хотя (кодировка UTF-16 в именах файлов NTFS).
Чтобы сделать это с помощью cmd.exe , вам нужно использовать диалог свойств консоли, чтобы переключиться на шрифт Unicode TrueType.
Затем используйте следующие команды:
CHCP 65001
DIR > UTF8.TXT
TYPE UTF8.TXT
Команды:
Символы по-прежнему должны поддерживаться шрифтом для правильного отображения на консоли.
Вот как я могу получить китайский выход в cmd.exe
, работающий на Windows 7 Pro English Version. Я также пробовал имена файлов на японском, русском и польском языках, и все они выглядят корректно. Входы также работают, по крайней мере, когда я пытался сделать dir xxx*
, содержащие символы без ascii.
cmd.exe
(и другие оболочки) HKEY_CURRENT_USER\Console\Console2 command window
в реестре. Импортируйте следующие данные в реестр Windows: Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\Console2 command window]
"CodePage"=dword:000003a8
"FontSize"=dword:000a0000
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"="細明體"
"HistoryNoDup"=dword:00000000
@NimSum
, и китайские символы вышли вращением на 90 градусов. Затем я переключился на NimSum
(без @), и он вышел правильно. Тогда просто из любопытства я переключился на Consola
, и все же я все еще вижу китайских иероглифов. Поэтому я не уверен, действительно ли вам нужно установить шрифт или нет. Начиная с November 2011 , MinTTY теперь является эмулятором терминала Cygwin по умолчанию (установленным setup.exe
). MinTTY - это вилка эмулятора терминала PuTTY, и, как таковая, поддерживает надлежащую поддержку Unicode и значительно улучшает совместимость с другими эмуляторами терминалов.
PowerShell V2 CTP3 внутри Консоль2 , похоже, делает это. Единственным недостатком является то, что стандартная консольная кодировка - UCS-2 LE вместо UTF-8.