【実践してみた】アバター作成をAI作品にする イイね 8選

皆さん、こんにちは。

今回は、アバターを作成してAI加工が出来るサイト・アプリをご案内します。

新しく出来たサイトは、特徴も必要ですから変換できる物が違ったりしています。しかしながら、よく見てみると購入品の方に誘導があったり(当たり前ですが…💦)、アップの元画像が必要だったりと少し制限が有る様に感じます。

使い方、皆さん其々ですから、情報を見ながら選択して下さい。一部サイトでは、実際の作品も掲載しますので、参考になさって頂けますと幸いです。

https://www.seaart.ai/ja

私が、よく利用させて頂いているサイトです。良い所は、何と言っても無料で利用出来る所

アプリ自体の更新も頻繁に有って、私が使用を始めた頃より安定して来たように感じます。

それと、使用方法も入力にスライダーが付いていますのでスマホでも十分利用できます。実際に、トップ画面には、日々たくさんの方が投稿されていますが、多分スマホで作ったんだろうなぁと言う物が見受けられます。

うめしげの一言

seaart aiは、自分の作品を投稿すると、スタミナと言うサイト内で使用出来るクレジットがもらえますから、良い感じで出来た物を出している方も多いです。しかしながら、投稿作品からでも、創作が可能な為、写真なども元画像も見えます。自分の生写真も丸見えですので、十分注意して下さい。チョットしたノリで出てるカップルさん(海外の方)多いのですが、大丈夫かなと心配です💦💦

こんな感じで、トップページには、沢山の投稿イラストが並んでします。日を跨いで繰り越し出来ない物が、1日150スタミナもらえますが、何回かやっていると足りなくなる事も有りますし、タスクと言われる作業(作品投稿等)を行うと、貰えたりするのでチャレンジして見て下さい。投稿の際も元画像がアバターだったら安心ですね^^。

クイックAIと言われる変換フィルターです。こういったジェネレーターサイトも増えましたので、貰えるクレジットの様子や使えるフィルターでお気に入りを探してみて下さい。

左端が元画像、順番に淡彩・カラフルな羽根・水墨画風です。

左端が、アバターの元画像ですがAIフィルターの違いだけで、大分イメージが変わります。

もう一つ、AI補完という機能もやってみます。例えば、モデルを使った創作は、チョットまだ出来ていないけど、クイックAIで作ったアバターの周りが足りなくて使い難い!という時に役立ちます。

seaart aiで作った物で無くても、画像をアップロード出来ますから便利な機能です。

最初は、色々むずかしく考えずにクイックAIでやってみて、チョット興味が出たら、創作というモデルを使った方法にチャレンジすると良いです。

創作は、AIイラストの代表的アプリでStable Diffusionなどにも有る手法で、モデルやLoRAといったAIに追加で学習させる仕組みを使っています。AIイラストをもっと勉強してみたいなぁと思った際の予習にもなりますので、良かったらチャレンジして見て下さい。

最近では、LoRAのトレーニング(自分のLoRAを作る作業)だけでなくモデルのトレーニングも出来る様になり、お任せだけではなく、自分でも工夫が出来る様になって来ました^^。

VRoidstudioでアバター作成(seaart ai)

では、実際にVRoidstudioを使ってアバターを作ってAI作品に仕上げてみます。

衣装アイテムは、いつものBOOTH新着アイテムから選んで見ました。2024,04,08現在、使用可能な掲載件数は20652件、沢山ありますのでお時間があったら覗いてみて下さい。

https://booth.pm/ja

いつも気にしてみている此方のshopさん、掲載開始から1カ月は無料配布してくれています。殆どのアイテムがセットになっているので、コーディネートに迷わなくて良いので助かります。

合わせて、殆どのアイテムが.vroidcustomitem形式なので、着用が簡単なのも嬉しいですね^^。

うめしげの一言

BOOTHには、ホントに沢山のアイテムが有るので、あれこれ見ていると結構時間が必要です。アッと思って見つけたお気にいり商品は、サクッと試してみたいですね^^。png形式だと慣れるまでは着用に少々時間が掛かるので、やっぱり.vroidcustomitem形式は有難いです。

①上段の衣裳②トップスと移動しました。ここは③カスタムがみえていればアプリがファイルを振り分けてくれるので何処でも大丈夫ですので④インポートからダウンロードした2種類のファイルを選択します。

今回は2種類のファイルが両方ともインナーをテンプレートに作られています。新しく作ったアバターが来ているTシャツやボトムズが浮いて見えていますので、プリセットの衣裳を見えなくします。⑤トップスで⑥(非着用)⑦ボトムズで⑧(非着用)にして下さい。

終わりましたら上半身インナーから⑨テクスチャを編集をクリックして編集画面に移動します。の部分をお好みに調整します。👁マークの色が薄い物が表示されていますのでアバターを見ながらお好みに合わせて下さい。

ジーンズは下半身インナーのテンプレートで作られていますが、基本画面のパラメーター(画面右側の沢山並んだスライダー)で調整が可能ですのでタイトな感じにもする事が出来ます。

靴は、プリセット(最初からアプリに付いているアイテム)の中から選びました。

終わりましたら左上のから名前を付けて保存、VRoidstudioでポーズを付ける様でしたら右上の📷へ進みます。アバターを他のアプリでも使用する様でしたら右上のからVRMエクスポートして下さい。

seaart aiでAI作品

では、出来上がったアバターをAI作品に仕上げていきます。

タイトルが作品と言う事でしたので、最近みかけたLoRAを使ってみました。seaart aiは投稿するとスタミナが貰えるので沢山の方が利用していますが、同じ傾向ですと飽きて来ます><。この水彩というLoRAは色味が変わって綺麗な雰囲気で気に入っています^^。

モデル ouka_star ノイズ除去強度 0.51

LoRA 水彩 | watercolor Clip Skip 1

モデルやLoRAの選択は、少し慣れが必要ですが、お時間の有る時にサイトを見ているとお気に入りの投稿が見つかると思います。最初は、それを参考にして余り沢山使わずにシンプルに行ったら変化が判り易いです^^。

アバターの元画像との比較も載せておきますね。

段々、要領がわかって来ますと、AI任せで作っています目の色の変更とは、簡単に出来る様になります。元画像を使いながら、少しづつ自分の思う作品に近づけていく行程は、ゲームをやっている様で楽しいですよ^^。

https://www.fotor.com/jp

こちらも良く利用していまして、無料のクレジットが毎日貰えます。作例を見ると、分る様に、ワンクリックで出来るフィルターに繊細で可愛いイラストが多いので、女性好みかもしれません^^。

もらえるクレジットは1日2クレジットですので、こまめに訪問して有る程度、集まったら利用すると良いと思います。

しかしながら、全てに機能が利用出来る訳では無くてAI系の画像補助ツールが利用できません。

サイト全体として画像の編集が色々出来るので、風景など加工出来たり、動画の編集(背景除去や色調整)機能も有ります。アバター作成だけでなく、色々、使ってみたい方には良いサイトだと思います。

それと、出来上がったアバターをサイト内で保存する事が出来るのでそれも有りがたい所です^^。

たくさんのフィルターが有りますので、お好きな物を選んで使ってみて下さい。どこのサイトでも、大体、同じかなと思いますが、ワンクリックのフィルターは、元画像の写真やイラストを使用する場合、なるべくお顔を大きく使用したほうが(大体は胸から上ぐらい)が結果が安定している感じです。

左端がアバターの元画像、順番にアニメ1・桜の花・おとぎ話を使ってみました。

うめしげの一言

fotorを無料で使用する場合、どうしても貰えるクレジットが少ない(元画像を使って作ると1回の作成で2~3枚作った方が良いので…)あれこれ、フィルターを試し難いかもしれません。

私のおすすめフィルターは、アニメ1・ファッション漫画・アニメ2イラストアニメです。

こちらは、おすすめフィルタ―の後3種類、左からファッション漫画・アニメ2・イラスト漫画です。

fotorでも作品を作ってみます。fotorはモデルの指定やLoRAの使用は出来ませんが、その分、簡単に楽しむ事が出来ます。合わせて、他のアプリでは余り見かけない類似度の調整が出来るので、その辺りを上手く使いながら作品に仕上げてみたいです。

VRoidstudioでアバター作成(fotor)

此方も新着アイテムの中から、良い感じの物を選んで見ました。

此方のshopさんも気にして見ています。ファイル形式も簡単着用が出来る.vroidcustomitem形式、かわいい女の子のアイテムが沢山並んでいます。しかも、此方のshopは全て無料配布のアイテムです。

もう少し凝った作りで、カラーバリエーションが多い有料アイテムが別にありますので、気になりましたら、是非、ご覧下さい。

https://bikonosshop.booth.pm/

ではVRoidstudioで作っていきます。

①上段の衣裳②左のトップスにいますが③カスタムがみえていれば何処でも大丈夫です。④インポートから3種類のファイルを選択します。各項目のの部分をクリックして(👁マークが薄い物が表示されています)ご希望に合わせて下さい。編集ページが開いていない時は左の項目から移動して⑤をクリックすると入れます^^。

今回の衣裳はヘアーアクセサリーが付いていてはね毛に移動が必要です。上段の髪型から左のはね毛に移動して下さい。

お好みに出来ましたら名前を付けて保存とVRMエクスポートをして終了します。

fotorでAI作品

今回は、繊細な雰囲気で仕上がるイラストアニメというフィルターを使っています。

最初に使用する画像をダウンロードします。画像を選択してからでないと高度な設定がエラーになる様です。

フィルターを選んで下の方にスライドしますと高度な設定が見えますのでお好みの数字にして下さい。デフォルトは70%(大きいほど元画像に近い仕上がりです)に設定されていますが、今回は、作品と言う事も有り、思い切ってAIに助けてもらいました。

フィルターの数も多いので、こつこつクレジットを貯めて、いろいろ楽しんでみて下さい。

高度な設定は、一度ちいさい数字を使うとAIが覚えていてデフォルトの数字が変わる様です。

思い切って雰囲気を変えたい時には、便利な機能だと思います。

https://www.media.io/jp/

AIアバター用のフィルタ―が凄く多いサイトです。アニメ風と言うよりは、リアルな感じだけど個性の有るフィルターが多い気がします。お試しは、作る事が出来ますがウォーターマークが入ります><。

画像のアップロードもお顔の大きさが小さいと難しい感じですし、ウォーターマーク無しで作ろうとすると料金が発生しますので、AIフィルターを見て、お気に入りが見つかったら利用してみる感じです。

他にも画像の圧縮やgif変換など、数量に制限が出ますが無料部分もあるツールが有りますので、覚えておいて、必要が出た時に作業すると良いです^^。

他のサイトでは、あまり見ないオーディオに関するツールも有りましたので、興味が出ましたらご覧になって下さい。

https://www.canva.com/

アバターを作るというよりは、デザインを作るサイトです。プロと言われる有料の部分も有りますが、無料登録で出来る部分も沢山有りますので、普段、デザインに困っている方は、重宝しそうです。

その中のアプリに、写真をアニメ画像に変換しますというAnimeifyが有ります。チョット、やってみました。

左端がアバターの元画像です。上手く、雰囲気が気に入れば、使い易いサイトになると思います。もう一つ、やってみます。こちらは、Anime Style、簡単な言葉の入力(プロンプト))で、作品を作ってくれます。

Anime Styleは、挿絵の様な感じでは、利用し易いですが、ご自身のアバターとしては、言葉の選択等ハードルが高い感じがするので、少し使い難いかなと思います。しかしながら、ホントに沢山の事が出来るので、最初は、何処に行けば何が出来るかを把握する事に時間が掛かりそうでした💦。

https://picwish.com/

こちらは、基本、有料のサイトです。AIギャラリーもテキスト(プロンプト)入力なので、ある程度なれが必要です。しかしながら、一つ、目新しい機能を見つけました。

背景生成ツール:AIが自動で背景を作ってくれます。お試しで利用すると55クレジット貰えると記載があったので試して見ました。

背景を切り取るのは、全然、珍しくなくなりましたが、更に背景も作ってくれるのは、始めてみたかもです^^。私は、今回、水を選択してみましたが、サンプル画像とは違った感じでした。水を指定すると、ランダムで水っぽい感じの背景になる様です^^。

此処からスマホアプリ

次は、スマホサイトのAIアバターをやってみます。PCのAIアバターは、AIが投稿を学んで成長していきますが、スマホアプリは、写真を10~20ぐらい(アプリによって差があります)読み込ませて、AIアバターを作る感じが多い様です。

今回は、1枚の元画像からでも作れるアプリをご案内しようと思います。

こちらは、7日の無料トライアル後、有料になる様です。月額450円で12か月の定期購入、中々強気の価格設定だと思います。他の方の過去記事を読んでいますと、無料の部分も有った様ですが、多分、凄く人気になって有料になった感じです💦。

その中に有りますAIアバター機能を、試してみたいと思います。

実際にやってみますと、例えば、二人が写っていますと、その内の一人だけを特定して、AIアバターに変更する事が出来ました。

いろいろな使い方が有ると思いますが、始めてみた機能で、細かい調整などは出来ませんが、クリックするだけでAIアバターに替わりますし、PCアプリの様に、枚数制限などが無いので、何回でも試してみる事が出来ます。

自分だけがアバターになるとか、隣に写っている子だけがアバターになるとか、おもしろいかもですね。

他にも、普通の写真を修整で来るフィルターも沢山有ります。こちらは、むしろPCアプリよりも多いかなと感じました。では、見てみますね^^。

使い方は、シンプルです。使いたい画像を選択したら(今回は作成済のアバター画像を使っています)①AIボタンをスライドします。AIアバターに移動しますので②今回はふたりなので2つ有りますが、変更したい方をタップしておくとそちらが変更します。後は下段の希望フィルタ―を選んで少し待つだけで出来上がります。

うめしげの一言

二人写っている場合は、連続して両方は出来ない様です。一人の修整済を一旦保存して、もう一度、同じ作業を、今度は顔を変更して行います。

現在は、10種類のフィルターが使えます。色々楽しめそうですね!ほかのフィルタ―も少し試してみます。

3Dゲームとキュートをやってみました。PCアプリですと全身画像に苦戦しますが、サクッと出来ました^^。こういった人気アプリは、ドンドン進化して新しいフィルタ―などが出て来ますし、普通の写真も加工してみたいけど、AIアバターも良いな!とお考えの方には、使い易い良いアプリだと感じました。

それと、この後、ご案内するアプリは、AIアバターを作るのに写真が10枚~20枚必要なのに対して、このアプリは1枚から作成できるので、使い易いです^^。

実際に、出来上がった画像も1枚ダウンロードしてみましたが、1500px四方のしっかりした画像でしたので、スマホの待ち受けはもちろんですが、PCの壁紙にも使えるクオリティです(因みにseaart aiの超HDの最大サイズが1024px四方です)。

うめしげの一言

そんなの当たり前だよ!と言われてしまいそうですが(すみません)出来上がったアバター画像をスマホに移動するのは、どうしたら…。iTunesで同期するとか、いろいろ書かれていますが、私は、メールに添付して送ってしまいました。今回の様な利用は、沢山の枚数になる事は有りませんし、実際、元画像は1枚づつしか送れませんでした><。普段やっている方法で、サクッとスマホに画像を送る方法でした^^。

こちらも3日間の無料トライアル終了後に、有料になります。

1年間の使用で、4100円ですからBeautyPlusよりは、少しお安い感じです。

こちらも、1枚の画像からAIイラストにしてくれます。ToonMeと言えばディズニーアニメ風と言われますが、勿論、ほかの画風も大丈夫です。

何十枚も画像が要らないので、チョットした記念で写した写真とか、出来上がったアバター画像も、AIイラストにしてくれますから、有難いです^^。

しかしながら、トップ画面は日本語表記になっているのですが、途中の操作画面は全くの英語表記になってるところも有って💦(まぁ、絵柄を見れば、大体これを選択したら良いのだろうと想像は出来ます^^)チョット、焦りました。

では、実際に作ってみます。

背景や髪形を選んで、クリックしたら、色々なバリエーションが出来上がりますので、ダウンロードします。こちらも、画像のサイズは、W896pxH1152px、でしっかりした大きさがありました。

BeautyPlusの場合は、出来上がりが1枚でしたが、此方は1回の作成で沢山の枚数が出来上がりますから、何回もチャレンジするより、サッと作ってくれて選べる方が良い方には、向いているな!と感じます。

LINEでも、AIイラストが出来る様になっています。AIイラストくんと言います^^。使い方はシンプルで、分かり易いです!

LINEで、AIイラストくんをお友達にします。説明が上段のチャットの所に出て、分かり易いです。それに従って進んでいきます。①トークをタップしますと製作画面に移動します。私は、今回②の作りたいテイストから③画像から作るを選択しています。

うめしげの一言

こう言ったタイプは、タップすると確認の為に色が着いたり、印が出たりしますが、LINEらしくチャット欄に文字が出ます。進める度にチャット欄を気にしているとわかりやすく説明してくれています^^。

ここで、イラストや人物を選択すると、文字入力を促されますので、チャットして画像を作って下さい。

④テイストの選択で⑤水彩画⑥写真送信を促されましたので⑦カメラロールから選ぶを選択して、少し待つと画像が出来上がります。今回は、手持ちのアバター画像を使ってみました。

左端がアバターの元画像、まん中が水墨画、右がイラストです。画像は512px四方の大きさでした。多分、有料プランになるとサイズが大きくなると思います。

スマホアプリのLINEをご案内しましたが、PCアプリも有るので利用が可能です。

公式ページのトップにPC用のアプリが有りますし、Chromeの拡張機能を使うと、パソコンにインストールせずともLINEを使用することができます。ページの最下部にスクロールすると、利用が可能です。

気になる料金ですが、現在は1日3回までの画像生成が無料で利用可能で、それ以上が課金となる様です。説明にも有りますが、使用されているAIがStable Diffusionと言う画像生成の代表的なAIなので、素晴らしいのですが、料金も少々、高めに設定されています。

プラン月額料金作成可能枚数その他の機能
ライトプラン1,980円毎日30枚生成の高速化とクオリティアップ
PROプラン6,980円無制限生成の高速化とクオリティアップ
プランにはそれぞれ3日間の無料期間が付いています。

うめしげの一言

今回のご案内で、おすすめは、PCがseaart ai スマホがLINEです。seaart aiは全ての機能が無料で利用出来るので、色々試せるのと、サイトも良く更新されていて、アバター作成には良いと感じます。スマホのLINEはAIがStable Diffusionなので、1枚からでも作れるのと、毎日3枚無料で利用出来てPCも使えるので、良いと思いました。

皆さんの一助になれば幸いです。

おつかれさまでした。

コメント

");const o=ie?ie.createHTML(e):e;if(nt===tt)try{t=(new W).parseFromString(o,at)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(nt,"template",null);try{t.documentElement.innerHTML=ot?ae:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),nt===tt?ue.call(t,Ie?"html":"body")[0]:Ie?t.documentElement:i},bt=function(e){return ce.call(e.ownerDocument||e,e,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},St=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof z)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Rt=function(e){return"function"==typeof b&&e instanceof b},wt=function(e,t,n){pe[e]&&u(pe[e],(e=>{e.call(o,t,n,ut)}))},Ct=function(e){let t=null;if(wt("beforeSanitizeElements",e,null),St(e))return _t(e),!0;const n=st(e.nodeName);if(wt("uponSanitizeElement",e,{tagName:n,allowedTags:Ne}),e.hasChildNodes()&&!Rt(e.firstElementChild)&&_(https://b-ume.net/<[/\w]/g,e.innerHTML)&&_(https://b-ume.net/<[/\w]/g,e.textContent))return _t(e),!0;if(e.nodeType===J)return _t(e),!0;if(Me&&e.nodeType===Q&&_(https://b-ume.net/<[/\w]/g,e.data))return _t(e),!0;if(!Ne[n]||Ce[n]){if(!Ce[n]&&Dt(n)){if(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(Ye&&!qe[n]){const t=re(e)||e.parentNode,n=oe(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=X(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,$(e))}}}return _t(e),!0}return e instanceof R&&!Et(e)?(_t(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!_(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Z&&(t=e.textContent,u([fe,de,he],(e=>{t=g(t,e," ")})),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),wt("afterSanitizeElements",e,null),!1):(_t(e),!0)},Lt=function(e,t,n){if(Be&&("id"===t||"name"===t)&&(n in r||n in mt))return!1;if(ve&&!Le[t]&&_(ge,t));else if(De&&_(Te,t));else if(!Se[t]||Le[t]){if(!(Dt(e)&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&_(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Ze[t]);else if(_(Ae,g(n,Ee,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==T(n,"data:")||!Ke[e]){if(Oe&&!_(ye,g(n,Ee,"")));else if(n)return!1}return!0},Dt=function(e){return"annotation-xml"!==e&&h(e,_e)},vt=function(e){wt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=st(a);let p="value"===a?c:y(c);if(n.attrName=s,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,wt("uponSanitizeAttribute",e,n),p=n.attrValue,n.forceKeepAttr)continue;if(At(a,e),!n.keepAttr)continue;if(!xe&&_(/\/>/i,p)){At(a,e);continue}if(Me&&_(/((--!?|])>)|<\/(style|title)/i,p)){At(a,e);continue}ke&&u([fe,de,he],(e=>{p=g(p,e," ")}));const f=st(e.nodeName);if(Lt(f,s,p)){if(!We||"id"!==s&&"name"!==s||(At(a,e),p=Ge+p),ie&&"object"==typeof G&&"function"==typeof G.getAttributeType)if(l);else switch(G.getAttributeType(f,s)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),St(e)?_t(e):m(o.removed)}catch(e){}}}wt("afterSanitizeAttributes",e,null)},Ot=function e(t){let n=null;const o=bt(t);for(wt("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)wt("uponSanitizeShadowNode",n,null),Ct(n)||(n.content instanceof s&&e(n.content),vt(n));wt("afterSanitizeShadowDOM",t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(ot=!e,ot&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Rt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ue||ft(t),o.removed=[],"string"==typeof e&&(je=!1),je){if(e.nodeName){const t=st(e.nodeName);if(!Ne[t]||Ce[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof b)n=Nt("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===V&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!Ie&&-1===e.indexOf("<"))return ie&&ze?ie.createHTML(e):e;if(n=Nt(e),!n)return Fe?null:ze?ae:""}n&&Pe&&_t(n.firstChild);const c=bt(je?e:n);for(;i=c.nextNode();)Ct(i)||(i.content instanceof s&&Ot(i.content),vt(i));if(je)return e;if(Fe){if(He)for(l=se.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Se.shadowroot||Se.shadowrootmode)&&(l=me.call(a,l,!0)),l}let m=Ie?n.outerHTML:n.innerHTML;return Ie&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(q,n.ownerDocument.doctype.name)&&(m="\n"+m),ke&&u([fe,de,he],(e=>{m=g(m,e," ")})),ie&&ze?ie.createHTML(m):m},o.setConfig=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ft(e),Ue=!0},o.clearConfig=function(){ut=null,Ue=!1},o.isValidAttribute=function(e,t,n){ut||ft({});const o=st(e),r=st(t);return Lt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},o.removeHook=function(e){if(pe[e])return m(pe[e])},o.removeHooks=function(e){pe[e]&&(pe[e]=[])},o.removeAllHooks=function(){pe={}},o}();return oe}))
タイトルとURLをコピーしました