月曜日, 9月 16, 2024

Let's start JavaScript 37 
クリックで配置画像が溶けて消える

クリックした画像が溶けて消える展開を作成してみました。

ルート階層の中に・・・
    picフォルダー(image.png)

という構造です。

<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>溶ける画像</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: turquoise;
}

/* .melting-imageクラスで画像の初期スタイルを設定。
transitionプロパティを使用して、
アニメーションを滑らかにするための時間(2秒)に設定。 */
.melting-image {
width: 300px;
cursor: pointer;
transition: transform 2s, opacity 2s, filter 2s;
}

/* .meltedクラスで画像クリック時に適用されるスタイルを指定。
transformプロパティにて画像を垂直方向に引き伸ばし、
下に移動させ、opacityを0にして透明にし、
filterプロパティでぼかし効果を加える。 */
.melting-image.melted {
transform: translateY(100px) scaleY(1.5);
opacity: 0;
filter: blur(20px);
}
</style>
</head>
<body>

<img src="pic/image.png"
alt="キャラクター" class="melting-image" id="image">

<script>
const image = document.getElementById('image');
/* addEventListenerで画像がクリックされたら、
meltedクラスを追加。
これで、CSSで指定されたアニメーションが実行。 */
image.addEventListener('click', function() {
this.classList.add('melted');
});
</script>
</body>
</html>
<!-- index.html -->


実際にクリック〜溶けて消える展開(ちょっと微妙)

TCDW8162 
特に梨は小降りの安いのが今年は皆無です

しかし、残暑が半端ないですね〜。そろそろ収まって欲しい時期ですが、台風の季節も好きにはなれないですね。いやいや、そんなことより果物が高くて洒落にならないです。特に梨は小降りの安いのが今年は皆無です・・・(>_<)。

日曜日, 9月 15, 2024

HTMLとCSSの様々な表現 17 
HTMLとCSSで配置画像を点滅

HTMLとCSSだけで配置画像を点滅させます。

<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSSで画像点滅</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: palegoldenrod;
}
/* 点滅アニメーションの定義 */
@keyframes blink {
0% { opacity: 1; }
50% { opacity: 0; }
100% { opacity: 1; }
}

/* 点滅させる画像のスタイル */
.blink-image {
animation: blink 2s infinite;
/* 2秒で1回のアニメーションを無限に繰り返す */
}
</style>
</head>
<body>
<img src="pic/image.png"
        alt="点滅する画像" class="blink-image">
</body>
</html>
<!-- index.html -->


再生結果です。画像をマウスで押しっぱなしにします。離すと動作は止まります。

TCDW8161 
寒色から暖色に好みが変化したのかも

インクジェットプリンターのカートリッジでBlack、Grayを除くと、消費の高い順は・・・
Yellow > Magenta> Cyanですが、昔はYellow >  Cyan > Magentaだったんです。寒色から暖色に好みが変化したのかも???

土曜日, 9月 14, 2024

Let's start JavaScript 36 
クリックで配置画像がゆらゆら揺れる

クリックした画像がゆらゆら揺れ・停止させてみました。

ルート階層の中に・・・
    picフォルダー(image.png)

という構造です。

<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>画像のゆらゆらアニメーション</title>
<style>
/* 画像の初期スタイル */
body, html {
height: 100%;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: lightpink;
}

#wobbleImage {
width: 400px;
cursor: pointer;
display: block;
margin: 0 auto;
transition: transform 0.1s ease-in-out;
}

/* ゆらゆら揺れるアニメーションのキー フレーム */
@keyframes wobble {
0%, 100% {
transform: rotate(0deg);
}
15% {
transform: rotate(20deg);
}
30% {
transform: rotate(-20deg);
}
45% {
transform: rotate(4deg);
}
60% {
transform: rotate(-4deg);
}
75% {
transform: rotate(10deg);
}
90% {
transform: rotate(-10deg);
}
}

/* アニメーションを適用するクラス */
.wobble {
animation: wobble 0.5s ease-in-out infinite;
}
</style>
</head>
<body>
<img id="wobbleImage"
src="pic/image.png" alt="クリックして揺れる画像">

<script>
const image = document.getElementById('wobbleImage');

// 画像をクリックで揺れるアニメーションを開始・停止する
image.addEventListener('click', () => {
image.classList.toggle('wobble');
});
</script>
</body>
</html>
<!-- index.html -->
 

実際にクリック〜ゆらゆら・停止の流れ(ちょっとキモイ)

TCDW8160 
エレベーターの中で激しくクシャミを連発している女性

Baby Alien 025
鼻じゃなくて口です(^o^)
鼻に口と言えば、コロナ対策?のマスクは今もしています。ただし電車やバスの中。そう言えば先日エレベーターの中で激しくクシャミを連発している女性に遭遇したときは焦りました。

金曜日, 9月 13, 2024

EXCELで複数行や列を固定する

行なら1行目から連続で数行、列なら1列目から連続で数列を固定するのは簡単です。


サンプルとして架空の出席表を作成しました。

最後の授業日の出席状況の入力で出席不足の学生をリストアップします。しかし、この状況では誰のデータなのか解りません。


そこで列を固定させますが、選択した列だけでなく連続して固定したい場合は固定したい列の次の列を選択します。作例ではH列まで固定したいのでI 列を選択します。



[表示]>[ウィンドウ]>[ウィンドウ枠の固定] を選びます。設定の解除は[表示]>[ウィンドウ]>[ウィンドウ枠の固定の解除]です。 

コレでH列までが固定されます。

TCDW8159 
映画知らなかったら気にもしないのですが・・・

今日は今年初となる「13日の金曜日」・・・まっ、映画知らなかったら気にもしないのですが・・・知っていても私にとっては平日です。ちなみに今年は12月13日も金曜ですね。

木曜日, 9月 12, 2024

Illustratorでの作図基本 07 
特殊方眼はパターンで逃げる

特殊方眼が必要な時はパターンで逃げ切ると原理です。ここでは対数グラフという設定で説明します。

※実はJavaScriptで悪戦中なのですが、デバッグで苦戦しているので、取りあえずExcel使えば直ぐに出来るのでこのネタを整理しました。

対数グラフなのでこんな感じです。

Excelなるこんな感じで計算できます。

桁数を小数2桁としてから100倍(※)します。

※作図しやすいサイズに変換

具体的にはこんな感じです。

100倍したlog(10)は100mmなので、100mmの線を作成し・・・
Control Cに続いてControl Fを同じ位置にコピーを配置し、Control Kでカーソル移動値にExcelで100倍にした値を入れてからカーソル移動させます。コレを繰り返し、上の状態になったら・・・

-90度回転コピーすれば上の状態になります。

ここで、左端の垂直線と一番下の水平線を削除してから全体を50%縮小します。

このままパターン登録しますが、50%に縮小したのに50mmになりません。ここが実は一番重要で、パターンは全体のサイズを基準とするので端数が出ます。つまり、線幅の分が加算されているわけです。ですから50mmに修正してから登録します。

後は任意の矩形に展開するだけです。なを、作例では0.5ptの線幅で処理しています。また、プレビューでは線幅がガタガタですが、コレはIllustratorの仕様なので慣れるしかないですね。どうしても気になるので私はラスタライズで目視しています。

さらに細かい間隔なqらば、log(1.5)のように0.5間隔にするなどで対応出来ます。

TCDW8158 
AIで何か描けるることよりも大切だと思う

古いEPSデータがIllustratorで読み込めなくなっていて焦る。無理なのは理解できるけれど、なんとかして欲しいですね〜。AIで何か描けるることよりも大切だと思うんですけどね〜。

水曜日, 9月 11, 2024

Excel VBA 30 
不透明度の色を何枚重ねたら100%になるか?


Visual Studio Basicと同じ事をVBAでやってみました。


-------------------
Sub CalculateLayersForOpacity()
Dim opacity As Double
Dim layers As Integer
Dim currentTransparency As Double
Dim transparency As Double

' ユーザーから不透明度を入力させる
opacity = InputBox
("不透明度N%を入力してください:", "不透明度の入力")

' 入力が無効な場合のチェック
If Not IsNumeric(opacity) Or opacity <= _
0 Or opacity > 100 Then
MsgBox "無効な入力です。"
0 より大きく100以下の数値を入力してください。 ", v"
bExclamation , "入力エラー"
Exit Sub
End If

' 透明度の計算
transparency = 1 - (opacity / 100)

' 初期化
layers = 0
currentTransparency = 1

' 99%以上不透明になるまでの層の計算
Do While currentTransparency > 0.01
currentTransparency = _
currentTransparency * transparency
layers = layers + 1
Loop

' 結果を表示
MsgBox "99%以上不透明になるまでに必要な層の数: " _
& layers, vbInformation, "計算結果"
End Sub
-------------------

実行したら透明度の%値を入力すると・・・

何枚必要なのかが表示されます。

TCDW8157 
理想は0ですが、私はロボットではないので

調子悪ければ医者で診て貰いもらい、調剤薬局で薬をもらいますね。で、調べて見たら定期検診を除き、この10年で平均半年に1回ほど医者に行っていました。風邪ですね〜。具体的には風邪気味で診てもらい、数日後に経過確認で薬の追加〜という流れなので実質年に1回でした。このルーチンが末永く続くことを願いたいです。理想は0ですが、私はロボットではないので(^o^)

火曜日, 9月 10, 2024

JavaScriptでAI遊び 25 
ランダムなサイズと色の円を100描画(CMYK版)

表示しているファイルの中にサイズと色違いの円を100個描画させます。
CMYK版

/* cmyk_circle100 */
function randomCMYKColor() {
// ランダムなCMYKカラーを生成
var color = new CMYKColor();
color.cyan = Math.random() * 100;
color.magenta = Math.random() * 100;
color.yellow = Math.random() * 100;
color.black = Math.random() * 0;
    //Blackを利用するとダークな結果になるので利用していません
return color;
}

function createRandomCircles(numCircles, minSize, maxSize) {
var doc = app.activeDocument;
// ドキュメントのアートボードの範囲を取得
var artboard =
        doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abRect = artboard.artboardRect;
var abLeft = abRect[0];
var abTop = abRect[1];
var abRight = abRect[2];
var abBottom = abRect[3];

for (var i = 0; i < numCircles; i++) {
// ランダムな円のサイズを決定
var size = minSize + Math.random() * (maxSize - minSize);

// ランダムな位置を決定(アートボード内)
var x = abLeft + Math.random() * (abRight - abLeft - size);
var y = abTop - Math.random() * (abTop - abBottom - size);

// 新しい円を作成
var circle = doc.pathItems.ellipse(y, x, size, size);

// 円にランダムなCMYK色を設定
circle.fillColor = randomCMYKColor();
circle.stroked = false; // 線なし
}
}

if (app.documents.length > 0) {
var numCircles = 100;
var minSize = 20; // 円の最小サイズ
var maxSize = 100; // 円の最大サイズ
createRandomCircles(numCircles, minSize, maxSize);
} else {
alert("ドキュメントを開いてください。");
}
/* cmyk_circle100 */

実行結果 A

実行結果 B

TCDW8156 
昔から風船を膨らませるのが苦手です

Baby Alien 024
バル〜ン(^o^)
バル〜ンと言えば、昔から風船を膨らませるのが苦手です。小学生の頃に、膨らませている途中で破裂したときのトラウマです。今は100均でゲットした風船用空気入れがあるので大丈夫。ただし、風船を膨らませること(※)なんて年に1回有るか無いかぐらいですね。

※球体のベースとして工作の下地用

月曜日, 9月 09, 2024

JavaScriptでAI遊び 24 
ランダムなサイズと色の円を100描画(RGB版)

表示しているファイルの中にサイズと色違いの円を100個描画させます。
RGB版

/* rgb_circle100.jsx */
function randomColor() {
// ランダムなRGBカラーを生成
var color = new RGBColor();
color.red = Math.random() * 255;
color.green = Math.random() * 255;
color.blue = Math.random() * 255;
return color;
}

function createRandomCircles(numCircles, minSize, maxSize) {
var doc = app.activeDocument;
// ドキュメントのアートボードの範囲を取得
var artboard =
        doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abRect = artboard.artboardRect;
var abLeft = abRect[0];
var abTop = abRect[1];
var abRight = abRect[2];
var abBottom = abRect[3];

for (var i = 0; i < numCircles; i++) {
// ランダムな円のサイズを決定
var size = minSize + Math.random() * (maxSize - minSize);

// ランダムな位置を決定(アートボード内)
var x = abLeft + Math.random() * (abRight - abLeft - size);
var y = abTop - Math.random() * (abTop - abBottom - size);

// 新しい円を作成
var circle = doc.pathItems.ellipse(y, x, size, size);

// 円にランダムな色を設定
circle.fillColor = randomColor();
circle.stroked = false; // 線なし
}
}

if (app.documents.length > 0) {
var numCircles = 100;
var minSize = 20; // 円の最小サイズ
var maxSize = 100; // 円の最大サイズ
createRandomCircles(numCircles, minSize, maxSize);
} else {
alert("ドキュメントを開いてください。");
}
/* rgb_circle100.jsx */

実行結果A

実行結果B

TCDW8155 
ロールケーキが食べたくなりました

今日は「ロールケーキの日」or「手巻寿司の日」だそうです。知りませんでした。取りあえずロールケーキが食べたくなりました(^o^)

日曜日, 9月 08, 2024

Excel VBA 29 
ピクセル、解像度、サイズの関係(2)

昨日諸般の事情で昔作ったVisual Studio Basiuc版をVBAで作り直した別バージョンです。

Visual Studio Basic_25 pixel, mm, dpiの関係計算機 2022/08/27

昨日のバージョンはExcelのシートは何も使いませんでしたが、今回はシートとの連動版です。

-----------------------
Sub pxとmmからを解像度求める()
' ppi, px, mmを単精度浮動小数型変数宣言
Dim ppi As Double
Dim px As Double
Dim mm As Double
' セルC4のpx値と、セルC5のmm値を取得
px = Range("C4").Value
mm = Range("C5").Value

' px値とmm値からppi値を求める
ppi = (px * 25.4) / mm

' 結果のppi値をセルD3に表示
Range("D3").Value = ppi
End Sub
Sub ppiとmmからピクセルを求める()
' ppi, px, mmを単精度浮動小数型変数宣言
Dim ppi As Double
Dim px As Double
Dim mm As Double

' セルC3のppi値と、セルC5のmm値を取得
ppi = Range("C3").Value
mm = Range("C5").Value

' ppi値とmm値からpx値を求める
px = (ppi * mm) / 25.4

' 結果のpx値をセルD4に表示
Range("D4").Value = px
End Sub
Sub ppiとpxからサイズを求める()
' ppi, px, mmを単精度浮動小数型変数宣言
Dim ppi As Double
Dim px As Double
Dim mm As Double

' セルC3のppi値と、セルC4のpx値を取得
ppi = Range("C3").Value
px = Range("C4").Value

' ppi値とpx値からmm値を求める
mm = (px * 25.4) / ppi

' 結果のmm値をセルD5に表示
Range("D5").Value = mm
End Sub

マクロを選択・起動します。
ppi=解像度
px=pixels ピクセル
mm=サイズ

ppiとmmからpxを求める
ppiとmm値を入力すれば、ピクセル値を表示します。

ppiとpxからmmを求める
ppiとpx値を入力すれば、サイズ値を表示します。

pxとmmからppiを求める
pxとmm値を入力すれば、解像度値を表示します。

TCDW8154 
黒蜜でオヤツとして食べると激しくナイズです

沖縄名物ピーナッツを原料とした豆腐のジーマーミ豆腐を初体験しました。専用のタレも美味しいけど、黒蜜でオヤツとして食べると激しくナイズです。

土曜日, 9月 07, 2024

Excel VBA 28 
ピクセル、解像度、サイズの関係

諸般の事情で昔作ったVisual Studio Basiuc版をVBAで作り直しました。簡易版です。

Visual Studio Basic_25 pixel, mm, dpiの関係計算機 2022/08/27

-----------------------
 Sub ppiとpxからmmを求める()
Dim ppi As Double
Dim px As Double
Dim mm As Double
Dim ppi_Input As String
Dim px_Input As String

' ppiの入力を促す
ppi_Input = InputBox _
("ppiを入力してください(例: 220)", "ppi入力")
' ユーザーがキャンセルを押した場合、処理を終了
If ppi_Input = "" Then Exit Sub
' ピクセル数の入力を促す
px_Input = InputBox _
("ピクセル数を入力してください(例: 1920)", "ピクセル入力")
' ユーザーがキャンセルを押した場合、処理を終了
If px_Input = "" Then Exit Sub
' 入力値を数値に変換
ppi = Val(ppi_Input)
px = Val(px_Input)
' ppiとピクセル数が正しいかチェック
If ppi > 0 And px > 0 Then
mm = (px / ppi) * 25.4
' 結果を表示
MsgBox "計算結果: " & Format(mm, "0.00") & " mm", _
vbInformation, "計算結果"
Else

' 入力値が無効な場合のエラーメッセージ
MsgBox "ppiとピクセル数を正しく入力してください。", _
vbExclamation, "入力エラー"
End If
End Sub
Sub pxとmmからppiを求める()
Dim px As Double
Dim mm As Double
Dim ppi As Double
Dim px_Input As String
Dim mm_Input As String
' ピクセル数の入力を促す
px_Input = InputBox _
("ピクセル数を入力してください(例: 1920)", "ピクセル入力")
' ユーザーがキャンセルを押した場合、処理を終了
If px_Input = "" Then Exit Sub
' ミリメートルの入力を促す
mm_Input = InputBox _
("ミリメートルを入力してください(例: 210)", "ミリメートル入力")
' ユーザーがキャンセルを押した場合、処理を終了
If mm_Input = "" Then Exit Sub
' 入力値を数値に変換
px = Val(px_Input)
mm = Val(mm_Input)
' ピクセル数とmmが正しいかチェック
If px > 0 And mm > 0 Then
' ピクセル数とmmからppiを計算
ppi = (px / mm) * 25.4

' 結果を表示
MsgBox "計算結果: " & Format(ppi, "0.00") _
& " ppi", vbInformation, "ppi計算結果"
Else
' 入力値が無効な場合のエラーメッセージ
MsgBox "ピクセル数とミリメートルを正しく入力してください。", _
vbExclamation, "入力エラー"
End If
End Sub
Sub ppiとmmからpxを求める()
Dim ppi As Double
Dim mm As Double
Dim px As Double
Dim ppi_Input As String
Dim mm_Input As String
' ppiの入力を促す
ppi_Input = InputBox _
("ppiを入力してください(例: 220)", "ppi入力")
' ユーザーがキャンセルを押した場合、処理を終了
If ppi_Input = "" Then Exit Sub
' ミリメートルの入力を促す
mm_Input = InputBox _
("ミリメートルを入力してください(例: 210)", "ミリメートル入力")
' ユーザーがキャンセルを押した場合、処理を終了
If mm_Input = "" Then Exit Sub
' 入力値を数値に変換
ppi = Val(ppi_Input)
mm = Val(mm_Input)
' ppiとmmが正しいかチェック
If ppi > 0 And mm > 0 Then
' ppiとmmからピクセル数を計算
px = (ppi * mm) / 25.4
' 結果を表示
MsgBox "計算結果: " & Format(px, "0") _
& " ピクセル", vbInformation, "ピクセル計算結果"
Else
' 入力値が無効な場合のエラーメッセージ
MsgBox "ppiとミリメートルを正しく入力してください。", _
vbExclamation, "入力エラー"
End If
End Sub
-----------------------
マクロを選択・起動します。
ppi=解像度
px=pixels ピクセル
mm=サイズ

ppiとmmからpxを求める
ppiとmm値を入力すれば・・・

ピクセル値を表示します。

ppiとpxからmmを求める
ppiとpx値を入力すれば・・・

サイズ値を表示します。

pxとmmからppiを求める
pxとmm値を入力すれば・・・

解像度値を表示します。