iphone14に買い替えたいけどね。#けどが付く。

2022.10.18

Logging

おはようございます、昨日、試験を受けに市内に出かけておりました😤。

さて、iphone14に買い替えたいけど金銭的な余裕はあるにはあるだけど、収入が入ってきている訳では無いので、やはり買わないで置こうと思っているのですが・・・欲しいことは欲しいですね。

iPhone 14 Pro Max | ProRes vs STANDARD vs CINEMATIC MODE

iPhone15になれば、USBタイプCに変わる可能性もあるので此処は我慢、我慢と思っています。因みにiPhone14 PROMAXを余裕で買える金額はあるにはあります。でもなぁ・・・今のiPhoneでも別によくてこの頃、撮影もしないからコレで良いじゃねと思っている所もあります。

でも、iPhone14で撮影した動画等を見ると買いだなって思うですよね🤑。

凄く悩みどころです、、、、。

今日は心のつぶやきをそのまま書いてみました、凄く優柔不断な文章になっています。最後に結論づけると毎月、固定収入が入ってきていたら間違いなくiPhone14購入しています👍。

タグ

14, 15, iPhone, PROMAX, USB, こと, コレ, タイプ, , 今日, 余裕, 優柔不断, 動画, 収入, 可能性, 固定, 市内, , 我慢, , 撮影, 文章, 昨日, 最後, 此処, 毎月, , 試験, 購入, 金額, ,

ページ無限スクロールの作り方 #インフィニティ#InfinityPageScroll #JavaScript

2022.09.22

Logging

おはようございます、台風14号が過ぎ去ってからいきなり秋模様ですね🫠。

さて、先日ツイートしたページ無限ループが出来るJavaScriptコードを書きました。これを作ろうと思ったキッカケは、自分が運営しているWordPressサイトに巷のページ無限スクロールプラグインが尽く(ことごとく)使用出来なかったので自分で自作した訳です。因みにページ無限スクロールプラグインとはページを送りをしなくてもページの最下までスクロールすると次頁を読み込んでくれるプラグインの事を指します。

下記のコードは自サイト専用なのでそのまま使用することは出来ませんが、重要な部分だけ抜き取って再利用すれば、独自のページ無限ループに対応することは可能かと思います。

コードを読んで頂ければ分かることですが、重要なポイントはページを読み込む方法とそれをDomに変換する方法だと思います。まず、ページを読み込む方法は下記のファンクションで可能です。

fetch(next_url).then(
                response => response.text()
            ).then(data => {

そしてDomに置き換えている所はこの部分になります。これら2つの箇所が重要になります。

                const parser = new DOMParser();
                const doc = parser.parseFromString(data, 'text/html');

これらの事に注意して独自コードを書いてみてください。最後に全コードを記載しときます。


let cnt = 2;
let blk = 0;
async function nextpage() {
    if (cnt !== blk) {
        blk = cnt;
        await (async () => {
            let next_url = "https://fox-black.com/blog/page/" + cnt;
            return await fetch(next_url).then(
                response => response.text()
            ).then(data => {
                const parser = new DOMParser();
                const doc = parser.parseFromString(data, 'text/html');
                let blogs = doc.querySelectorAll('.blogpage');
                cnt++;
                if (blogs[0].innerHTML !== undefined) {
                    document.querySelector(".foxpage").insertAdjacentHTML("beforeend", (function (elm) {
                        let str = "";
                        for (const key in elm) {
                            const element = elm[key];
                            if (element.innerHTML !== undefined) {
                                str += "<div class=\"blogpage\">" + element.innerHTML + "</div>";
                            }
                        }
                        return str;
                    })(blogs));
                } else {
                    if (document.querySelector("#fin") === null) {
                        document.querySelector(".foxpage").insertAdjacentHTML("beforeend", "<div id=\"fin\"></div>");
                    }
                }
            }).catch(error => {
                if (document.querySelector("#fin") === null) {
                    document.querySelector(".foxpage").insertAdjacentHTML("beforeend", "<div id=\"fin\"></div>");
                }
            });
        })();
    }
}

if (navigator.userAgent.match(/iPhone|Android.+Mobile/)) {
    window.addEventListener("scroll", async function () {
        let s = (() => {
            let tgt;
            if ('scrollingElement' in document) {
                tgt = document.scrollingElement;
            } else if (this.browser.isWebKit) {
                tgt = document.body;
            } else {
                tgt = document.documentElement;
            }
            return tgt;
        })();
        if (document.querySelector("#fin") === null && s.scrollTop >= (s.clientHeight - 650)) {
            await nextpage();
        }
    });
} else {
    document.querySelector(".foxpage").addEventListener("scroll", async function () {
        if (document.querySelector("#fin") === null && document.querySelector(".foxpage").scrollTop >= (document.querySelector(".foxpage").scrollHeight - 300)) {
            await nextpage();
        }
    });
}


タグ

14, dom, InfinityPageScroll, javascript, WordPress, インフィニティ, キッカケ, コード, こと, これ, サイト, スクロール, それ, ツイート, プラグイン, ページ, ポイント, ループ, 下記, , 作り方, 使用, 先日, 利用, 可能, 台風, 変換, 対応, 専用, , 方法, 最下, 模様, 次頁, 無限, , , 自作, 自分, , 運営, 部分, 重要,

iphone14にするかAndroidスマホにするのか。

2022.07.17

Logging

お早うございます。iphone14にするかAndroidスマホにするのか凄く悩んでいます。この問題はios16がリリースされた後にも悩むかもしれません。この頃のiPhoneは魅力をあまり感じないですね。ただ、Androidに移行するのが面倒くさいというだけで、iPhoneを使用している感じが強いのです。

一番はコロナ禍になりマスクをかける機会が日本では未だに多く、顔認証の時にいちいちマスクを外してロック解除をしないといけないのが手間です。これをios16では解消してくれるらしいのですが、自分のiPhoneは対象外らしいのでソレだったら、もうこの際にAndroidのスマホに乗り換えても良いのかなとか考えています。

移行時にネックだった二段階認証も二段階認証のエクスポート機能を使えばそれほど難しい事もないらしいので、何とかなりそうな気がします。後は切替のタイミングとどの端末を購入するかなどで検討中です。高知県では5Gがまだまだ浸透していないのですが、5G機能は必要かなって思っています、後はお財布携帯機能、これだけは外せないな。

こんな機能が付いているスマホが4万円代で購入出来るみたいなので、何だかiPhoneの割高感の強いスマホに買い替えるより、とてもリーズナブルな感じはします。

そういう良い所はあると思うのですが、iPhoneを手放すのも惜しい気もする。それが今の答えなので今回のiPhone14は見送りも視野に考えていてiPhone15もそれ程、革新的なスマホではないのらAndroidに買い替えるつもりでいます。とか言いながらiPhone14にしているかもしれない…。

追伸:現段階では親に今の機種を譲渡するのはちょっと保留中です。

タグ

14, 16, 5, Android, iOS, iPhone, エクスポート, これ, コロナ, スマホ, ソレ, タイミング, ネック, マスク, リリース, ロック, , , , 使用, 問題, 対象, , 感じ, 手間, 日本, , 未だ, 検討, 機会, 機能, 段階, , , 移行, 端末, 自分, 解消, 解除, 認証, 購入, , , 顔認証, 高知県, 魅力,

iPhoneに関してだけ言えばだけども買うのは?の方が良い🦅。

2022.06.17

Logging

おはようございます、たまに自然を聞くのは良いですね、実際、川や山にいくと虫もセットになりますが、今ではYOUTUBEでそのサウンドを聞くことが出来ます。

いま、iPhone14を購入しようか悩んでいます。その理由の一つは親のiPhoneがios16非対応製品になってしまったことです、よってセキュリティやアプリの対応で問題が生じる可能性が出てきました。

4K 波の音と焚き火映像でくつろぐ 2時間48分

そのため、今のiPhoneを親に譲って自分はiPhone14を購入することになるかもなって思っています。iPhoneとAndroid端末を比べてみるとAndroid端末でも十分なような気がしますが、自分は長年iPhone端末を使用してきているので、なんだかiPhoneの方がしっくりときます。

iPhoneだけの話で言えば買い替え時は最新の上位機種に買え替えたほうが長く使用できます。ios16発表時にiPhone7を切ってくるとは正直なところ思わなかったのですが、残念ながらiPhone7は対象から外されましたね。ともあれ、再来年までには最新鋭の機種に買えかえます😌。

タグ

14, 16, 7, Android, iOS, iPhone, youtube, アプリ, いま, こと, サウンド, セキュリティ, セット, たま, ため, ところ, わなか, 一つ, 上位, , 使用, 可能性, 問題, 実際, 対応, , , , , 最新, 機種, 正直, , 理由, 発表, 端末, 自分, 自然, , 製品, , , 購入, 長年,

物欲リスト:自分が欲しい物を列挙してみたら、自分の物欲を可視化できたかも!?

2021.11.23

Logging

昨日は雨がしとしとと高知県でも降っていましたが、今日はお天気になるのでしょうか?さてタイトル通り、自分が欲しい物を列挙してみました、また、欲しい理由なども書いています。ほしい商品の横に理由も書いています。

  • LG モニター ディスプレイ?24インチぐらい*4台 理由:ディスプレイを全て同じ製品に統一したいから。
  • iPhone14 まだ発売されていないけど・・・理由:そろそろ買い替えたい。
  • SONYの高級ヘッドホン 理由:いまのヘッドホンがボロボロになってきているので
  • appleのAirPods三世代目 理由:iPhoneには純正製品がベストだと思うから
  • ルーターwifi6対応の高性能の奴 理由:もっとストレスフリーになりたいので。
  • 4Kテレビ 理由:親にプレゼント
  • マウスなるべく高いやつ 理由:やはりそれなりに良いマウスがいいよね。
  • キーボードなるべく高いやつ 理由:マウスと同じく。
  • 指紋認証できるUSB機器 Windowsにログイン用 理由:Windowsにログインするのが面倒くさいので。
  • エアコン 理由:親にプレゼント
  • 高性能の自作PC 理由:今のPCもある程度、高性能だけどインテルから高性能のCPUが出たと聞いたので。
  • Mac mini 理由:アプリ作るときに必要です。
  • MacBook Pro 理由:外で仕事するのに欲しい。

以上になりますね。全部、揃えていると中古車が買えちゃうじゃないかと思うぐらいのお値段になりますね。特にりんご商品は高い気がします、ノートは買わなくてもMac miniは買わないとなとは思っているですよ。

https://www.youtube.com/watch?v=XKfgdkcIUxw

こうやって自分の物欲リストを列挙してみましたが欲しい物はほぼ電化製品でした。あとは、映画のブルーレイなども欲しい物はありますが、電化製品よりかは欲求度は低い感じがします。

タグ

14, 24, 4, 6, AirPods, apple, iPhone, LG, SONY, USB, wifi, window, いま, キーボード, ストレスフリー, それなり, タイトル, ディスプレイ, テレビ, プレゼント, ベスト, ヘッドホン, ボロボロ, マウス, モニター, やつ, リスト, ルーター, , 今日, 全て, 列挙, 可視, 商品, 天気, , 対応, 性能, 指紋, 昨日, , 機器, , 物欲, 理由, 発売, 純正, 統一, 自分, 製品, , 認証, , 高知県, 高級,

iPhone13を買わない人です?、理由はコレコレさんですから。

2021.09.17

Logging

iPhone13を買わない人です?、理由はiPhone13の機能があまり向上していないとか、iPhone12のアップデート版だとかではなくて、iPhone13に買い替えてもその性能を引き出すことができる環境にいるかと言えば違うからという理由からです。性能を引き出すことが出来る環境というのは5G環境下にいないので慌てて買う必要なくね?という理由からiPhone14以降で自分は考えています。

【iPhone13】新機能は?バッテリーと動画の性能向上 新商品お披露目

あと自分としてはiPhoneも新ipad miniのようにUSBタイプCに変えてほしかったなという思いもあります。おそらくユーザーからタイプCは好評価を得ることが出来るので、iPhoneもゆくゆくはタイプCに置き換わると思います。

ずばり、iPad miniが最も買いです【Appleイベントまとめ】

iPhoneからアンドロイド端末に変えようかなとか思ったりしていますが、iPhoneから新iPhoneにデータを移行するのにも時間がかかるのにアンドロイド端末に移行するとなるとますます、面倒くさいのでアンドロイド端末はアプリなどの動作テスト用にしか使わないですね。

トイウコトデ、今回のiPhone13に自分が買い換えることは無さそうです・・・。もしかしたら、こっそりiPhone13に変えているかもしれないけどね。

タグ

12, 13, 14, 5, iPad, iPhone, mini, USB, アップデート, アンドロイド, こと, コレ, タイプ, データ, ユーザー, , 向上, 性能, , 時間, 機能, 理由, 環境, 移行, 端末, 自分, 評価,

ファイナルファンタジー7リメイクが発売して結構月日が経ちますが。

2021.06.15

Logging

ファイナルファンタジー7リメイクが発売して結構月日が経ちますが未だにPART1をクリアしておりません、いまエピーソード14のクエストをちょびちょびと解決していってます。まだPART1もクリアしていないので6月10日にリリース(発売)したFINAL FANTASY VII REMAKE?INTERGRADEファイナルファンタジーVII?リメイク インターグレード)なんて多分、PS5(PlayStation5)が民に行き渡ったぐらいに始めようと思っています。ファイナルファンタジーVII?リメイク インターグレードはPS5でしか遊べないそうなのです。正直なところ売上は赤字だろうけど、Sonyとそういう契約を結んでいるだろうからスクエアエニックスはペイできる・・・?はず。

FINAL FANTASY VII REMAKE INTERGRADE – Final Trailer

しかし、PlayStation5の品不足や転売(高価)はまだまだ続くでしょうね。楽天では高値でPlayStation5を販売している業者が結構います。自分はFF7Rをクリアしても当分は購入せずに頃合いをみて購入しようと思います。

タグ

, 10, 14, 5, 6, 7, FANTASY, FINAL, INTERGRADE, Part, PlayStation, PS, REMAKE, SONY, VII, いま, インター, エピーソード, クエスト, クリア, グレード, スクエアエニックス, ところ, パス, ファイナルファンタジー, ペイ, リメイク, リリース, 品不足, 多分, 契約, 月日, 未だ, 業者, 楽天, 正直, , 発売, , 解決, 販売, 赤字, 転売, 高価, 高値,

FF14をプレイしています。土日祝の朝頃から

2021.03.28

Logging

先日からFF14をプレイしています、まだFF14の中でもソロです、ヘルプしてくれる人もいないのでレベル1のモンスターを狩ってレベル上げをしています。キャラ名はSakurai zinと名前付けしてサーバーはMANAHadesで活動中です。

フリープレイですが30日間の体験が終わってもゲーム(ファイナルファンタジー14)を遊びます。でもやっぱソロはあまり面白くないのでヘルプしてくれる人がいれば、声掛けて欲しいです?。リアル友はあまりゲームしない人が多いので告知した次第です。以前もFF14プレイしていたのですがいつの間にか辞めてしまいましたが、誰か仲間が入れば続けていけるかと思います。なのでよろしくです。本当はリアルの知っている人とプレイしたいのですけどね?。

因みにここらへんで狩りをしたり座り込んだりしています。座っているときは他の作業をしている時です。声をかけてくれても返答できないかもですが後から声掛けします。まだフリープレイなのでモーグリの機能などは使用できません。なお、レベル10になれば狩るところが変わっていくと思います。

追記:倦怠感があるときは休んでます。

タグ

, 14, 30, FF, Hades, MANA, Sakurai, zin, キャラ, ゲーム, ここら, サーバー, ソロ, とき, ファイナルファンタジー, フリー, プレイ, ヘルプ, べん, モンスター, リアル, レベル, , , , 以前, 仲間, 体験, 作業, 先日, , 名前, 告知, 土日, , 声掛け, , , , 本当, 次第, 活動, , 誰か, 返答,

FF14を自動起動させてパスワード入力を

2021.03.23

Logging

Power Automate Desktop使用してFF14を自動起動させてパスワード入力する事を試みる。パスワード入力の動作を録画して再現して実行してみると動かないので自分で直しました。当初はUI Pathを活用して試してみたけど結局、うまく行かないので凄く単純な方法で動作をさせました。因みにこの方法はFF14が開いている最中に他のアプリを開いたりすると上手く動作することが出来ないので悪しからず。

上記のような設定をします。ウェイト(待ち時間)はご自身のPCによって調整が必要です。キーの送信部分は下記のように設定ください。

これで超長いパスワードを入力することもなくワンパスワードを入力すれば良いようになりました。ワンパスを設定していない方やフリープレイの方は送信するテキストを入力して保存するだけで後は、Power Automate Desktopを起動してフローを再生(実行)することで自動的にFF14が起動してパスワードを入力してくれます。

※前手順としてID保存状態にした状態で上記を実行ください!!!

https://flow.microsoft.com/ja-jp/desktop/

タグ

14, Automate, Desktop, FF, path, PC, Power, UI, アプリ, ウェイト, キー, こと, これ, ご自身, テキスト, パス, パスワ, パスワード, フリー, プレイ, フロー, ワン, 上記, 下記, , , 使用, 保存, 入力, 再現, 再生, 動作, 単純, 実行, 当初, 待ち時間, , 必要, , 方法, 最中, 活用, 自分, 自動, 設定, 調整, 起動, 送信, 部分, 録画,

FF7Rがやっと。

2020.12.02

Logging

FINAL FANTASY VII REMAKE ファイナルトレーラー

FF7Rがやっとチャプター14に行き着きました。あと、もう少しでFF7Rの1stが終わろうとしています。来年にはFF7Rの1stのエンディング?が見えると思います。

FINAL FANTASY VII REMAKE オープニングムービートレーラー

まだFF7Rをプレイしていない方、プレイしてみようと思っている方はいちど、FF7Rをプレイしてみると良いかなと自分は思います。今まで積みゲーになってきたタイトルがかなりあるのに、何故かこのFF7Rだけは最後までプレイすることが出来そうな気がするタイトルです。

なので未だYOUTUBEでFF7Rのクリア動画は見ていません!!見たらやっぱ楽しみ半減しますからね。FF7Rの続編はあると思いますがまだまだ先の話になりそうですね。そのまえにFF16がプレイすることができそうなので良いのですが、FF7Rのようにクラッシックモードがあれば良いのになと思っています。

FINAL FANTASY XVI “AWAKENING”

FF16が発売されるときにはPS5は買っているかと思います、因みにもう公式サイトができているので、来年もしかしたら発売されるかもしれないなと思っています。

FFの開発が著しく落ちていた次期から、最近脱却したような記事をちょっと前に見かけました。今までデバッグ作業やテストプレイでバグが発売前などに見つかり発売の延期が何度か続いた次期があったのですが、AI、人工知能を活用することによりテストプレイはほぼ人工知能が24時間、デバッグできるようになり開発が順調に進むようになったんだとか。なのでこれからは結構発売の延期はなくなるのではないかなと思っています。

参考記事:
https://www.wantedly.com/companies/jp4/post_articles/247115?auto_login_flag=true#=

タグ

, 14, 16, 5, 7, FF, PS, st, youtube, いち, エンディング, かな, かなり, クラッシック, クリア, ゲー, こと, サイト, タイトル, チャプター, とき, プレイ, まえ, モード, , 公式, 動画, 半減, , 最後, 未だ, 来年, 楽しみ, , 発売, 続編, 自分, ,

ios14のウィジェットをカスタマイズする方法。

2020.09.25

Logging

ios14のウィジェットをカスタマイズする方法を紹介している動画を2つ紹介します。どちらもウィジェットスミス(Widgetsmith)というiosアプリを使用してカスタマイズしています。下記の動画を見ていただければわかるかと思いますが、日本語対応していないので若干、面倒かなと思うかもしれませんが慣れれば簡単です。

ウィジェット定番アプリ「Widgetsmith」の使い方を徹底解説!
【iPhoneホーム画面】iOS14アップデートで秋っぽくおしゃれにカスタマイズ!おすすめアプリ紹介!📱

その他にも、colorwidgetsというアプリもあるそうですね。そのうち、日本語対応のウィジェットアプリがリリースされるとは思いますが、今の処、日本語対応のゴリゴリカスタマイズできるウィジェットアプリはリリースされていないようです。

ウィジェットを「効率的に」設置できる便利アプリをご紹介!

あと自分としてはPaypayの純正のウィジェットが便利だなと思っています。人目で残高確認ができますし、支払いのショートカットとしても優秀かなと思っています。ただ、いま例の問題(不正引き落とし問題・2020/09/25:現在)でチャージが地銀などから出来ない状態が続いているので支払いは控えてます。

〆ios14のウィジェットカスタマイズの方法(手順解説)でした。

タグ

09, 14, 2, 2020, 25, colorwidgets, iOS, Paypay, Widgetsmith, アプリ, いま, ウィジェット, うち, カスタマイズ, ショートカット, スミス, その他, チャージ, どちら, リリース, 下記, 不正, 人目, , 使用, 便利, 優秀, , 動画, 問題, 地銀, 対応, 方法, 日本語, 残高, 現在, 確認, 簡単, 純正, 紹介, 自分, 若干, 面倒,

iOS 14 Widgets[ウィジェット]

2020.07.01

Logging

iOS 14 Widgets[ウィジェット]の最初の感想はいまいちだったんだけど、下記の動画を見て結構使えるじゃないかなと思っています。ただウィジェットを使いすぎると見た目が悪くなりそうな気もします。使いやすいようになったと言えばそうなんですけど。創業者だったスティーブ・ジョブズさんはどう思っているかと思うと…。

iOS 14 Widgets, App Library, & Home Screen for iPhone & iPad!

ただアップルが変わりつつ有ることは確かだなと思います。使いやさとデザインの両立って結構、大変な問題かなと思います。それに加えて技術的要素なども関係してくるから製品を作るのは結構大変な事だと思います。ある意味、妥協しつつ、技術が追いつけば昔の引き出しからデザインを足すという形なんでしょうね。

そんなウィジェットのことよりもPicture in Picture (PiP)[ピクチャ・イン・ピクチャ]がiPhoneでも出来るようになったことが自分にとっては朗報かなと思います。これでゴロゴロしながらってのがもっと効率的になりますよね。

How to use Picture in Picture (PiP) in YouTube! iOS 14

これは怠惰なひとを増やす、恐ろしい機能です?。

タグ

14, in, iOS, iPhone, Picture, pip, Widgets, アップル, いまいち, いん, ウィジェット, こと, これ, さと, ジョブズ, スティーブ, それ, デザイン, ピクチャ, 下記, 両立, , 創業者, 動画, 問題, 大変, 妥協, 引き出し, , 意味, 感想, 技術, , 最初, 朗報, , 自分, 製品, 要素, 見た目, 関係,

東京女子YOUTUBER干しいもこ!?

2020.03.18

Logging

東京でパート勤務働く女性の日常などなどをYOUTUBEで配信しているいもこさんです。手取り14?15万でも生活できているというのは凄いけど、YOUTUBERとしての収入も増えていけば東京で生きやすくなるのではないかなと思っています。現在(2020/03/18)の登録者数は1万人弱ですが、これが増えていけば本業がYOUTUBERってなるかもしれません。動画の印象からすると、収入が増えたとしても、いもこさんは今の職業を続けそうな気がします。

【独身パート勤務】手取り14万円。東京(元)一人暮らし奨学金返済有りの凡人のお金公開。【概要欄】

東京で14万円って結構たいへんだと思います。それでも家計簿や計画性があればやりくりが出来るのだなと、凄く上記の動画を見て感心しました。どんなに収入が多くても出費が多ければお金は貯まらないですからね。 ?

最後にチャンネル登録はこちらから(干しいもこ)
https://www.youtube.com/channel/UCM35Scv0OZl2FslQLrG9x8Q

タグ

0, 03, , 14, 15, 18, 2, 2020, 35, 8, , channel-, com, FslQLrG, https, OZl, Scv, UCM, www, youtube, YOUTUBER, いもこ, お金, こちら, これ, たいへん, チャンネル, パート, やりくり, , 上記, , 出費, 動画, 勤務, 印象, 収入, 女子, 女性, 家計, 感心, 手取り, 日常, 最後, 本業, 東京, , 現在, 生活, 登録, 登録者, 職業, 計画性, 配信,

画像をタイル状に分離して一括ダウンロードさせるジェネレーター

2019.09.07

Logging

画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)

追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>画像分離してダウンロード:画像分離ジェネレーター</title>
        <meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="../jquery/jquery-3.4.1.js"></script>
        <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
        <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'UA-71682075-1');
        </script>        
        <style>
            body{
                background-color: black;
                color: antiquewhite;
            }
            img{
                margin:10!important;
                padding:10!important;
            }       
            #container{
                width: 100%;
            }
            #container img{
                margin:10px;   
            }       
        </style>    
    </head>
    <body>
        <span id="bat"></span><a id="dl"></a>
        <input class="form-control" type="file"></input>
        <div id="container"></div>
        <script>
            $(function(){
                $("[type=file]").on("change",function(){
                    $('#container').html("");
                    $("#bat").html("");
                    console.log($(this));
                    if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
                        alert("ファイル形式エラー");
                        return false;
                    }                        
                    var canvas = document.createElement('canvas');
                    var reader = new FileReader();
                    reader.onload = function(event) {
                        var image = new Image();
                        image.onload = function() {
                            sprite = {width:50,height:50};
                            canvas.width = sprite.width;
                            canvas.height = sprite.height;
                            var ctx = canvas.getContext("2d");                            
                            var x = 0;
                            for(var i=0; i*sprite.height<image.height; i++){
                                for(var j=0; j*sprite.width<image.width; j++){
                                    ctx.drawImage(
                                    image,j*sprite.width,i*sprite.height,
                                    sprite.width,sprite.height,
                                    0,0,
                                    sprite.width,sprite.height
                                    );

                                    var spriteElement = new Image;
                                    spriteElement.src= canvas.toDataURL();
                                    $('#container').append(spriteElement);
                                }
                            }
                            $("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
                        }
                        image.src = event.target.result;                       
                    }
                    reader.readAsDataURL($(this).prop('files')[0]);
                    
                });
            });

            function bat_img(){
                var data = [];
                for(var i=0; i< $("img").length;i++){
                    data.push({"base64":$("img").eq(i).attr("src"),"no":i});
                }
                $.ajax({
                    type: 'POST',
                    url: 'bat_img.php',
                    data:{"obj":data},
                    dataType: 'json'
                }).done(function(obj){

                    if(obj[obj.length - 1 ].chk=="ok"){

                        var link = document.getElementById("dl");
                        link.href = obj[obj.length - 1].zippath;
                        link.download = "zipimg.zip";
                        link.click();

                        var data2 = [];
                        for(var i = 0 ; i < obj.length ; i++){
                            if(i==0){
                                data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
                            }else{
                                data2.push({Path:obj.path,no:obj.no,t:obj.t});
                            }
                            
                        }

                       var del = function(){
                            $.ajax({
                                type: 'POST',
                                url: './bat_del.php',
                                data:{"obj":data2},
                                dataType: 'json'
                            });
                        };
                        del();
                    }
                    });
                }
        </script>
    </body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
    $b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
    $no = (int)$val["no"];
    $t = time();
    $Path = "./bat_img/tmp/$t-$no.png";
    $re = @file_put_contents($Path,$b64);
    if($re){
        $obj[$i]["chk"] = $re?"ok":"ng";
        $obj[$i]["name"] = "$t-$no.png";
        $obj[$i]["path"] = $Path;
        $obj[$i]["no"] = $no;
        $obj[$i]["t"] = $t;
        $i++;
    }
}
$obj[--$i]["zippath"] = zipfile($obj);

print json_encode($obj);


function zipfile($obj){
    $ZipFiles = function($obj){
        foreach($obj as $key=>$val){
           $path[] = $val["path"];
        }
        return $path;
    };
    $Zip_Files = $ZipFiles($obj);
    $zipFileName = time().'_zipimg.zip';

    set_time_limit(0);
    $zip = new ZipArchive();
    $zipTmpDir = './tmp/zip/';
    $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
    if( $result !== true ){ //エラー処理
      echo 'error!';
      exit();
    }
    foreach ($Zip_Files as $key=>$filepath) {
      $filename=basename($filepath);
    // ZIP圧縮するファイルを追加
    // ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
      $zip->addFile($filepath,$filename); 
    }
    //ZIP 出力
    $zip->close();

    return $zipTmpDir.$zipFileName;
}
<?php

unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
    $Path = $val["Path"];
    $no = (int)$val["no"];
    $t = (int)$val["t"];
    
    $cmd = function(){
        foreach(glob("./bat_img/tmp/*") as $file_name){
            $command = "rm -rf " . realpath($file_name);
            exec($command);
        }    
    };
    
    if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
        if(is_file($Path)){
            sleep(30);
            unlink($Path);
        }else{
            $cmd();
        }
    }else{
        $cmd();
    }

}

タグ

, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,