木曜日, 6月 05, 2025
TCDW8423
超広角は13mm、2倍は48mm(昔の標準)
数年前からiPhoneでも積極的に写真を撮るようになったのですが、撮り始めると違和感がほとんど無いのです。そして、その理由が判明しました。iPhoneの標準画角は24mmなのです。私は学生のときは24mmが好きで多用していました。だから親近感があったのかもしれません。ちなみに超広角は13mm、2倍は48mm(ほぼ昔の標準)、3倍で72mm(昔の中望遠)だそうです。
ラベル:
illustration,
Photoshop,
TCDW
水曜日, 6月 04, 2025
Excelで関数リストにないDATEDIF関数
日数を計算するDATEIF関数は、なぜか関数リストにない関数です。よって、手入力しなけらばなりません。以下の追加情報です。
Excel_12 DATEDIF関数で日付計算が簡単です 2020/07/02
構造は・・・
=DATEIF(開始日 , 終了日 , 単位)
・開始日 : 日数を数え始める日を指定する
・終了日 : 日数を数え終える日を指定する
・単 位 : 求めた日数の表示形式を " " で囲んで指定する
C2:期間内の年数(満たしている年数)
D2:1年未満の月数(年数表示での端数の月数)
E2:1年未満の日数(年数表示での端数の日数)
F2:1か月未満の日数(月数表示での端数の日数)
G2:期間内の月数(満たしている月数)
H2:期間内の日数
C2〜H2に以下の記述を行います。
C2:=DATEDIF(B2,TODAY(),"y")
D2:=DATEDIF(B2,TODAY(),"ym")
E2:=DATEDIF(B2,TODAY(),"yd")
F2:=DATEDIF(B2,TODAY(),"md")
G2:=DATEDIF(B2,TODAY(),"m")
H2:=DATEDIF(B2,TODAY(),"d")
TCDW8422
とんでもない行数になるので今回はパス
Baby Alien 090
可愛いぷっちょ系〜(^o^)
ラベル:
3D,
Baby Alien,
modo,
TCDW
火曜日, 6月 03, 2025
JavaScriptでAI遊び 49
Illustratorで集中線を描画
Illustratorで集中線を描画してみました。
// 集中線を作成するIllustratorスクリプト
function createSpeedLines() {
if (app.documents.length == 0) {
alert("ドキュメントが開かれていません。");
return;
}
var doc = app.activeDocument;
var artboard =
doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abBounds = artboard.artboardRect;
// アートボード中心座標
var centerX = (abBounds[0] + abBounds[2]) / 2;
var centerY = (abBounds[1] + abBounds[3]) / 2;
// ユーザー入力
var lineCount =
parseInt(prompt("線の本数を入力:", "100"), 10);
if (isNaN(lineCount) || lineCount < 1) return;
var minLength =
parseFloat(prompt("線の最小長さ (mm):", "50"));
var maxLength =
parseFloat(prompt("線の最大長さ (mm):", "200"));
if (isNaN(minLength) || isNaN(maxLength) ||
minLength >= maxLength) return;
var strokeWidth = parseFloat(prompt("線の太さ (pt):", "1"));
if (isNaN(strokeWidth) || strokeWidth <= 0) return;
var group = doc.groupItems.add(); // まとめるためのグループ
for (var i = 0; i < lineCount; i++) {
var angle = Math.random() * 360; // 0°〜360°のランダムな角度
var length = minLength + Math.random() *
(maxLength - minLength); // ランダムな長さ
// 角度をラジアンに変換
var rad = angle * (Math.PI / 180);
// 終点の座標を計算
var endX = centerX + Math.cos(rad) * length;
var endY = centerY + Math.sin(rad) * length;
// 線を作成
var line = doc.pathItems.add();
line.setEntirePath([[centerX, centerY], [endX, endY]]);
line.stroked = true;
line.strokeWidth = strokeWidth;
line.filled = false;
line.move(group, ElementPlacement.PLACEATEND);
}
alert("集中線を作成しました!");
}
createSpeedLines();
実行して、各パラメーターの値を入力すれば描画が実行されます。
デフォルト設定の処理結果です。
ここで右上のようなオブジェをアートブラシ登録し・・・
作成した集中線に指定すれば上のようなイメージを簡単に作成出来ます。
ラベル:
Illustrator,
JavaScript
月曜日, 6月 02, 2025
Let's start JavaScript 69
HTML上で入力テキストを音声変換
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 {
font-family: Arial, sans-serif;
text-align: center;
margin: 10px;
background-color: mediumseagreen;
color: white;
}
textarea {
direction: ltr;
text-align: left;
}
</style>
</head>
<body>
<h3>テキスト読み上げ</h3>
<textarea id="userText" rows="8" cols="55"></textarea><br>
<!-- textarea に入力されたテキストを読み上げ -->
<label>速 度: <input type="range" id="rate" min="0.5"
max="2" step="0.1" value="1"></label><br>
<label>音 程: <input type="range" id="pitch" min="0.5"
max="2" step="0.1" value="1"></label><br>
<label>音 量: <input type="range" id="volume"
min="0" max="1" step="0.1" value="1"></label><br>
<!-- rate (速度): 0.5(遅い)~ 2.0(速い)
pitch (音程): 0.5(低い)~ 2.0(高い)
volume (音量): 0.0(ミュート)~ 1.0(最大)-->
<label>声を選択:
<select id="voiceSelect"></select></label><br><br>
<button onclick="speakText()">▶ 読み上げ</button>
<button onclick="pauseSpeech()">⏸ 一時停止</button>
<button onclick="resumeSpeech()">▶ 再 開</button>
<button onclick="stopSpeech()">⏹ 停 止</button>
<script>
let voices = [];
let utterance = new SpeechSynthesisUtterance();
// 音声リストを取得してドロップダウンに追加
// speechSynthesis.getVoices(); を使い、
// ブラウザが提供する音声リストを取得
// option を生成して <select> に追加
function loadVoices() {
voices = speechSynthesis.getVoices();
let voiceSelect = document.getElementById("voiceSelect");
voiceSelect.innerHTML = "";
voices.forEach((voice, index) => {
let option = document.createElement("option");
option.value = index;
option.textContent = `${voice.name} (${voice.lang})`;
voiceSelect.appendChild(option);
});
}
// 開始 (speakText()) → speechSynthesis.speak(utterance);
function speakText() {
if (speechSynthesis.speaking) {
speechSynthesis.cancel(); // 連続読み上げ防止
}
utterance.text =
document.getElementById("userText").value;
utterance.rate =
document.getElementById("rate").value; // 速度
utterance.pitch =
document.getElementById("pitch").value; // 声の高さ
utterance.volume =
document.getElementById("volume").value; // 音量
let selectedVoice =
voices[document.getElementById("voiceSelect").value];
if (selectedVoice) {
utterance.voice = selectedVoice;
}
speechSynthesis.speak(utterance);
}
// 一時停止 (pauseSpeech()) → speechSynthesis.pause();
function pauseSpeech() {
speechSynthesis.pause(); // 一時停止
}
// 再開 (resumeSpeech()) → speechSynthesis.resume();
function resumeSpeech() {
speechSynthesis.resume(); // 再開
}
// 停止 (stopSpeech()) → speechSynthesis.cancel();
function stopSpeech() {
speechSynthesis.cancel(); // 停止
}
// 音声データがロードされたときに実行
speechSynthesis.onvoiceschanged = loadVoices;
</script>
</body>
</html>
表示直後の状態
テキストを入力して[▶読み上げ]で読み上げてくれます。
ラベル:
HTML,
JavaScript
日曜日, 6月 01, 2025
Photoshopでのマスキング処理はレイヤーマスクと大胆さ
質問がありましたあので・・・
Photoshopでのマスキング処理はレイヤーマスクと大胆さがキモです。
サンプル画像のデニム地の色を赤に変更する想定で説明します。
上に新規レイヤーを描画モード[ソフトライト]で作成して求める色で塗り潰します。
こんな感じです。
ここでレイヤーマッスクを作成して、ザックリとマスクを作成します。
この段階で細部は見死します。
次に元画像をスマートオブジェクトに変更します。
これで影になっている部分の可視を高めるためにレベル補正で明るめに調整します。スマートオブジェクトなので、いつでも修正あるいは変更しても元画像はいつでも元に戻せます。
処理後のイメージです。これで細部の状態が解りやすくなります。
後は細部調整です。
上は処理後の状態です。
ちなみにブラシの硬さを適宜調整します。最初のザックリ処理の時は硬さ[100] 、細部の曖昧な部分はブラシサイズを小さめにして硬さ[0]で乗り切ります。
処理が完了したら,レベル補正のチェックを外すだけで元のイメージになります。
取りあえずの完成イメージです。
ラベル:
Photoshop
登録:
投稿 (Atom)