Virtueller Friedhof

  • Seite 2 von 3
08.11.2023 12:09
#16 RE: Virtueller Friedhof
mo
Mitglied

Hm also das CSS habe ich jetzt hier eingefügt .... oder muss das in das untere Feld?



bbc und html habe ich hier eingegeben, aber das stimmt wohl nicht so ganz...



Und so sieht es im Forum aus:




Was mache ich falsch?


 Antworten

 Beitrag melden
08.11.2023 14:04
#17 RE: Virtueller Friedhof
l2
Mitglied

alles richtig gemacht - nur leider mein Forencode war falsch oder nicht zu Ende gedacht.

bbc [gedenkA] [/gedenkA]
HTML<div class="hg1"><div class="var1"></div></div>





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
08.11.2023 14:09
#18 RE: Virtueller Friedhof
mo
Mitglied

ui das hat funktioniert klasse danke

und wenn ich jetzt statt den 2 blöcken ein Bild hinterlegen will, worauf der Text platziert ist, in was muss ich den CSS abändern und wo muss ich das bild hinterlegen?


 Antworten

 Beitrag melden
08.11.2023 14:45 (zuletzt bearbeitet: 08.11.2023 15:02)
#19 RE: Virtueller Friedhof
l2
Mitglied


habe jetzt kein passendes Bild zur Hand.
Nehmen wir dieses Motiv (ca 1300*600)

ab Punkt (x/y 700/150) wäre Platz für Beschriftung




css

1
2
3
4
5
6
7
 
div.hg2 { 
padding-left:700px ;
padding-top:150px;
background: white no-repeat url(//files.homepagemodules.de/b214495/f11769157t547427p7346819n3_gFblTopD.png);
color:brown;
}
 
 



und Forencode

bbc [gedenkB] [/gedenkB]
HTML<div class="hg2"></div>



bleibt noch die Frage, wo das Bild hochladen? Finde jetzt nicht die Seite in der (neuen) Admin,

diese Adresse musst du anpassen: meinforum.xobor.de/admin/fileupload.php





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
08.11.2023 15:29
#20 RE: Virtueller Friedhof
mo
Mitglied

div.hg2 {
padding-left:500px ;
padding-top:500px;
background: white no-repeat url(//files.homepagemodules.de/b916951/a_9_32eba669.png);
color:brown;
}

hab ich gemacht, allerdings folgende Fehlermeldung:
Fehlermeldung: parse error: failed at `background: white no-repeat url(//files.homepagemodules.de/b916951/a_9_32eba669.png); ` (stdin) on line

3935


 Antworten

 Beitrag melden
08.11.2023 15:40
#21 RE: Virtueller Friedhof
l2
Mitglied

wie immer habe ich die Gänsefüßchen oder Apostroph vergessen

background: white no-repeat url(//files.homepagemodules.de/b916951/a_9_32eba669.png);


1
2
 
background: white no-repeat url("//files.homepagemodules.de/b916951/a_9_32eba669.png");
 
 





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
08.11.2023 16:58
#22 RE: Virtueller Friedhof
mo
Mitglied

nochmal nerven...



Wie platziere ich den Text da wo ich ihn haben will. Ich habe mit dem anderen Code von dir schon rum probiert, aber hat nicht geklappt...


 Antworten

 Beitrag melden
08.11.2023 19:52 (zuletzt bearbeitet: 08.11.2023 19:57)
avatar  Enricos
#23 RE: Virtueller Friedhof
En
Mitglied

Ich habe hier mal ein Script geschrieben, dieses funktioniert nur auf meiner Homepage.

Für die Forensoftware muss sie noch angepasst werden, da ich mich mit der v6 null auskenne und die Codes da anders sind, fällt das Anpassen für mich sehr schwer.

So für das Business tempelte 4 muss es noch angepasst werden, wie ich schon weis sind es die Classes die das Forum so verzerren.

Es ist ein Script, der alles auf dem Grabstein meißelt, und wenn man fertig ist, kann man es downloaden.

Habe es in meinem Forum getestet, das funktioniert so weit, nur liegt es an den Classes, da es das Forum stark beeinflusst, und verändert.

Jetzt hier mal eine lieb gemeinte und nette Frage an die lieben und netten Kollegen, die hier gerne ihre Zeit und Geduld investieren und immer Hilf bereit sind. Ob sie so nett wären und sich mal den Code anschauen würden, und so lieb und hilfsbereit wären und helfen würden, für alle tempelte anpassen würden.

Hier mal mein Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
 
<style>
html, body {
width: 100%;
height: 100%;
}
 
body {
background: #f0f0f0;
}
 
div {
position: relative;
width: 95%;
max-width: 600px;
margin: 1rem auto;
}
div::after {
content: "";
padding-bottom: 69%;
display: block;
}
div canvas {
position: absolute;
top: 50%;
left: 50%;
height: auto;
width: 100%;
transform: translate(-50%, -50%);
}
div canvas#render {
display: none;
}
 
section {
width: 95%;
margin: 1rem auto;
max-width: 400px;
}
section a,
section input {
display: block;
width: 100%;
box-sizing: border-box;
font-size: 0.8rem;
}
section a {
padding: 0.6em 0.5em 0.5em;
border: none;
background: #121212;
color: white;
cursor: pointer;
text-align: center;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.025em;
}
section a:hover {
opacity: 0.9;
}
section input {
padding: 0.25em 0.5em;
font-family: Times, sans-serif;
letter-spacing: 0.025em;
text-transform: uppercase;
border: 1px solid #e9e9e9;
text-align: center;
}
section input::-moz-placeholder {
color: #ccc;
}
section input:-ms-input-placeholder {
color: #ccc;
}
section input::placeholder {
color: #ccc;
}
section input + * {
margin-top: 0.5rem;
}
</style>
 

<div>
<canvas id="background"></canvas>
<canvas id="text"></canvas>
<canvas id="render"></canvas>
</div>
 
<section>
<input id="name" type="text" placeholder="Geliebte/ Geliebter/ Haustier" maxlength="24" />
<input id="line1" type="text" placeholder="Line 1" maxlength="40" />
<input id="line2" type="text" placeholder="Line 2" maxlength="40" />
<input id="line3" type="text" placeholder="Line 3" maxlength="40" />
<input id="year" type="text" placeholder="Januar 1, 1980 - December 31, 2020" maxlength="40" />
<a id="load" href="#">Download</a>
</section>
 
<script>
console.clear();
 
class GrabsteinGenerator {
constructor() {
this.initializeGlobals();
this.initializeDOM();
this.initialize();
}
 
initializeGlobals() {
let ogw = 833;
let ogh = 576;
let ar = ogh / ogw;
this.w = 600;
this.h = this.w * ar;
}
 
initializeDOM() {
this.$cvsBackground = document.querySelector('#background');
this.$ctxBackground = this.$cvsBackground.getContext('2d');
this.$cvsText = document.querySelector('#text');
this.$ctxText = this.$cvsText.getContext('2d');
this.$cvsRender = document.querySelector('#render');
this.$ctxRender = this.$cvsRender.getContext('2d');
 
this.$name = document.querySelector('#name');
this.$name.addEventListener('input', () => {this.onChange();});
this.$line1 = document.querySelector('#line1');
this.$line1.addEventListener('input', () => {this.onChange();});
this.$line2 = document.querySelector('#line2');
this.$line2.addEventListener('input', () => {this.onChange();});
this.$line3 = document.querySelector('#line3');
this.$line3.addEventListener('input', () => {this.onChange();});
this.$year = document.querySelector('#year');
this.$year.addEventListener('input', () => {this.onChange();});
this.$load = document.querySelector('#load');
this.$load.addEventListener('click', () => {this.onRender();});
 
this.$cvsBackground.height = this.h;
this.$cvsBackground.width = this.w;
this.$cvsText.height = this.h;
this.$cvsText.width = this.w;
this.$cvsRender.height = this.h;
this.$cvsRender.width = this.w;
}
 
initialize() {
let url = '//files.homepagemodules.de/b906480/a_309_74461be2.jpeg';
this.$img = new Image();
this.$img.src = url;
this.$img.addEventListener('load', () => {
this.onLoad();
});
}
 
onLoad() {
this.$ctxBackground.drawImage(this.$img, 0, 0, this.w, this.h);
}
 
onChange() {
this.drawText([
this.$name.value,
this.$line1.value,
this.$line2.value,
this.$line3.value,
this.$year.value]);
 
}
 
onRender() {
this.$ctxRender.drawImage(this.$cvsBackground, 0, 0);
this.$ctxRender.drawImage(this.$cvsText, 0, 0);
this.$load.href = this.$cvsRender.toDataURL();
this.$load.download = 'Grabstein.png';
}
 
drawText(text) {
this.$ctxText.shadowColor = 'rgba(255, 255, 255, 0.4)';
this.$ctxText.shadowOffsetX = 1;
this.$ctxText.shadowOffsetY = 1;
this.$ctxText.shadowBlur = 0.5;
this.$ctxText.clearRect(0, 0, this.w, this.h);
let sizes = [24, 15, 15, 15, 12];
let top = this.h * 0.35;
text.forEach((line, i) => {
line = line.toUpperCase();
let fontSize = sizes[i];
this.$ctxText.fillStyle = 'rgba(0, 0, 0, 0.55)';
this.$ctxText.font = `${fontSize}px Times`;
this.$ctxText.textAlign = 'center';
this.$ctxText.textBaseline = 'top';
this.$ctxText.fillText(line, this.w / 2, top);
top += fontSize * 1.3;
if (i === text.length - 2) top += 10;
});
}}
 

let tg = new GrabsteinGenerator();
</script>
 



Ich habe lange daran gesessen und geschrieben und bin froh, dass das so weit funktioniert, nur habe ich Probleme sie an das Forum anzupassen zwecks Classes. Und für das V6 bin ich machtlos da es andere Codes sind wie in Business Tempelte 4

Um zu zeigen, dass mein Script funktioniert hier der Link:
Grabstein meißeln!


Ich hoffe, ich habe es nett und verständlich erklärt und liebevoll ausgedrückt, Ich bedanke mich im Voraus für die Hilfe.
Nette Grüße
Enricos

Ich benutze das -→>>> Template Business Template (v4) <<<←---

 Antworten

 Beitrag melden
08.11.2023 20:34
#24 RE: Virtueller Friedhof
avatar
Mitglied

Hallo @Enricos,

ich habe es ausprobiert, klasse !!

Kann zwar nicht helfen, aber ich drücke alle verfügbaren Daumen, dass unsere emsigen Experten eine Lösung finden.

____________________________________________________________
es grüßt Franz-Jupp

https://www.zur-blende.de/
nutzt Template V3

 Antworten

 Beitrag melden
09.11.2023 10:23
#25 RE: Virtueller Friedhof
l2
Mitglied

monellos Grabstein muß leider noch etwas warten, weil dein Script @Enricos viel spannender ist.

die Grafik ist wirklich überzeugend ...

Zitat von Enricos im Beitrag #23
Es ist ein Script, der alles auf dem Grabstein meißelt, und wenn man fertig ist, kann man es downloaden.



... denke, dass funkioniert nur, wenn du Schreibrechte auf dem Server hast.
Loggst du dich bei https://codepen.io/ aus, wird dir wie uns kein Download gelingen.

habe deinen Code für eine eigene Seite angepasst https://test-v6.xobor.de/page-enricos.html

Trotz des Download-Dilemmas ist deine Arbeit nicht umsonst!

Wenn man auch keine Grafik auf xobor speichern kann, so läßt sich das neue Bild doch dynamisch im Beitrag/Thread erzeugen.
Mit einem Forencode, der die Bildinformationen und die Texteingaben enthält, stelle ich mir das gar nicht schwierig vor.

Danke erstmal für die tolle Idee und die überzeugende Umsetzung.
Ein neuer Grundstein ist gelegt ...





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
09.11.2023 12:43 (zuletzt bearbeitet: 09.11.2023 12:46)
avatar  Enricos
#26 RE: Virtueller Friedhof
En
Mitglied

Ups habe den Fehler gefunden, ich habe vergessen das Bild zu codieren.

l2otbart_57 vielen lieben dank, für die schnelle Hilfe, kam gerade von der Arbeit zurück und schaute schnell nach, habe dein Code benutzt und das Bild vom Server genommen und nochmal codiert, jetzt geht der Download. Wer gerne testen möchte, kann das gerne nochmal tun.

Ich muss gleich wieder los auf mein Nebenjob arbeiten als Hausmeister, werde mich später nochmal melden.

Ich bedanke mich recht herzlich an alle helfenden Kollegen, vielen lieben Dank.

Der codierte Code kann ich hier nicht posten. Er ist zu lang, das Forum meckert zu viele Zeichen


Ich hoffe das es jetzt mit dem Download funktioniert, in CodePen habe ich es auch geändert und im Forum funktioniert es auch.

Hier in mein Forum:
Grabstein meißeln!


Nette Grüße

Enricos

P.S. Vielen vielen Dank für die schnelle hilfe und unterstützung

Ich benutze das -→>>> Template Business Template (v4) <<<←---

 Antworten

 Beitrag melden
09.11.2023 13:11
#27 RE: Virtueller Friedhof
avatar
Mitglied

Danke @Enricos der Test funktionierte

____________________________________________________________
es grüßt Franz-Jupp

https://www.zur-blende.de/
nutzt Template V3

 Antworten

 Beitrag melden
09.11.2023 16:41 (zuletzt bearbeitet: 09.11.2023 17:03)
#28 RE: Virtueller Friedhof
l2
Mitglied

Zitat von monello-tierurnen im Beitrag #22




line 1
line 2
line 3

so überzeugend
finde ich das CSS noch nicht.

auf schmalen Displays treffen die Zeilen
nicht den vorgesehenen Ort.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
div.hg3 {
display:inline-block;
width:400px;
max-width:100%;
height:400px;
font-size:1.0em;
float:left;
}
 
div.var3 {
background: url("//files.homepagemodules.de/b916951/a_9_32eba669.png" );
background-size: cover;
padding-left:33%;
padding-right:33%;
padding-top:42%;
display:inline-block;
width:100%;
height:100%;
text-align:center;
color:black;
}
 





bbc [gedenkC] [/gedenkC]
HTML<div class="hg3"><div class="var3"></div></div>





... würde es „Fussball spielen” heissen

vG Bernd‍

 Antworten

 Beitrag melden
12.01.2024 14:45 (zuletzt bearbeitet: 12.01.2024 14:55)
avatar  Enricos
#29 RE: Virtueller Friedhof
En
Mitglied

Hallo, l2otbart_57

Habe mich nochmal ein bisschen damit befasst. Man kann also eigentlich jedes Bild dafür nehmen, nur muss das codiert werden.

Also mit Dateianweisung laden, das Bild ist dann vom PC, wird aber in eine Vielzahl von Nummern und Zahlen codiert, kann man im eigenen Forum eintragen, die Adresse.

Bild blank sieht so aus:


sieht zum Beispiel so aus:

1
 
'data:image/png;base64,iVBORw0KGgoAAA
 



Ich kann hier leider nicht den vollständigen Code angeben, da die Zahlenzeilen sehr begrenzt sind für Texteingabe und nicht angezeigt werden kann.

Ich habe mal von dem Bild die Zeilen und Überschrift entfernt.

ausgefüllt sieht zum Beispiel so aus:

Habe es mal in meinem Script eingebaut, wie gesagt man kann dafür jedes Bild verwenden muss bei manchen Sachen in der CSS Anpassungen machen je nach Bild.

Wie gesagt, mit Codierung kann man auch Downloaden.

Ich benutze das -→>>> Template Business Template (v4) <<<←---

 Antworten

 Beitrag melden
12.01.2024 15:21 (zuletzt bearbeitet: 12.01.2024 15:26)
avatar  Enricos
#30 RE: Virtueller Friedhof
En
Mitglied

Hier nochmal der Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
 
<style>
/* ---------- Version: 12.01.2024
html, body {
width: 100%;
height: 100%;
}
&nbsp;
body {
background: #f0f0f0;
}
-----------&nbsp;*/
div.daishi {
position: relative;
width: 95%;
max-width: 600px;
margin: 1rem auto;
}
div.daishi::after {
content: "";
padding-bottom: 69%;
display: block;
}
div.daishi canvas {
position: absolute;
top: 50%;
left: 50%;
height: auto;
width: 100%;
transform: translate(-50%, -50%);
}
div.daishi canvas#render {
display: none;
}
&nbsp;
section.daishi {
width: 95%;
margin: 1rem auto;
max-width: 400px;
}
section.daishi a,
section.daishi input {
display: block;
width: 100%;
box-sizing: border-box;
font-size: 0.8rem;
}
section.daishi a {
padding: 0.6em 0.5em 0.5em;
border: none;
background: #121212;
color: white;
cursor: pointer;
text-align: center;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.025em;
}
section.daishi a:hover {
opacity: 0.9;
}
section.daishi input {
padding: 0.25em 0.5em;
font-family: Times, sans-serif;
letter-spacing: 0.025em;
text-transform: uppercase;
border: 1px solid #e9e9e9;
text-align: center;
 
max-width:20em;
margin:auto;
}
section.daishi input::-moz-placeholder {
color: #ccc;
}
section.daishi input:-ms-input-placeholder {
color: #ccc;
}
section.daishi input::placeholder {
color: #ccc;
}
section.daishi input + * {
margin-top: 0.5rem;
}
</style>
&nbsp;
 
<div class="daishi">
<canvas id="background" height="414" width="600"></canvas>
<canvas id="text" height="414" width="600"></canvas>
<canvas id="render" height="414" width="600"></canvas>
</div>
&nbsp;
<section class="daishi">
<input id="name" type="text" placeholder="Geliebte/ Geliebter/ Haustier" maxlength="28">
<input id="line1" type="text" placeholder="Line 1" maxlength="40">
<input id="line2" type="text" placeholder="Line 2" maxlength="40">
<input id="line3" type="text" placeholder="Line 3" maxlength="40">
<input id="year" type="text" placeholder="Januar 1, 1980 - December 31, 2020" maxlength="40">
<a id="load" href="#">Download</a>
</section>
&nbsp;
<script>
console.clear();
&nbsp;
class GrabsteinGenerator {
constructor() {
this.initializeGlobals();
this.initializeDOM();
this.initialize();
}
&nbsp;
initializeGlobals() {
let ogw = 833;
let ogh = 576;
let ar = ogh / ogw;
this.w = 600;
this.h = this.w * ar;
}
&nbsp;
initializeDOM() {
this.$cvsBackground = document.querySelector('#background');
this.$ctxBackground = this.$cvsBackground.getContext('2d');
this.$cvsText = document.querySelector('#text');
this.$ctxText = this.$cvsText.getContext('2d');
this.$cvsRender = document.querySelector('#render');
this.$ctxRender = this.$cvsRender.getContext('2d');
&nbsp;
this.$name = document.querySelector('#name');
this.$name.addEventListener('input', () => {this.onChange();});
this.$line1 = document.querySelector('#line1');
this.$line1.addEventListener('input', () => {this.onChange();});
this.$line2 = document.querySelector('#line2');
this.$line2.addEventListener('input', () => {this.onChange();});
this.$line3 = document.querySelector('#line3');
this.$line3.addEventListener('input', () => {this.onChange();});
 
this.$year = document.querySelector('#year');
this.$year.addEventListener('input', () => {this.onChange();});
this.$load = document.querySelector('#load');
this.$load.addEventListener('click', () => {this.onRender();});
&nbsp;
this.$cvsBackground.height = this.h;
this.$cvsBackground.width = this.w;
this.$cvsText.height = this.h;
this.$cvsText.width = this.w;
this.$cvsRender.height = this.h;
this.$cvsRender.width = this.w;
}
&nbsp;
initialize() {
let url = 'Hier data:image/png;base64, Eingeben';
this.$img = new Image();
this.$img.src = url;
this.$img.addEventListener('load', () => {
this.onLoad();
});
}
&nbsp;
onLoad() {
this.$ctxBackground.drawImage(this.$img, 0, 0, this.w, this.h);
}
&nbsp;
onChange() {
this.drawText([
this.$name.value,
this.$line1.value,
this.$line2.value,
this.$line3.value,
this.$year.value,
]);
&nbsp;
}
&nbsp;
onRender() {
this.$ctxRender.drawImage(this.$cvsBackground, 0, 0);
this.$ctxRender.drawImage(this.$cvsText, 0, 0);
this.$load.href = this.$cvsRender.toDataURL();
this.$load.download = 'Grabstein.png';
}
&nbsp;
drawText(text) {
this.$ctxText.shadowColor = 'rgba(255, 255, 255, 0.4)';
this.$ctxText.shadowOffsetX = 1;
this.$ctxText.shadowOffsetY = 1;
this.$ctxText.shadowBlur = 0.5;
this.$ctxText.clearRect(0, 0, this.w, this.h);
let sizes = [24, 15, 15, 15, 12];
let top = this.h * 0.35;
text.forEach((line, i) => {
line = line.toUpperCase();
let fontSize = sizes[i];
this.$ctxText.fillStyle = 'rgba(0, 0, 0, 0.55)';
this.$ctxText.font = `${fontSize}px Times`;
this.$ctxText.textAlign = 'center';
this.$ctxText.textBaseline = 'top';
this.$ctxText.fillText(line, this.w / 2, top);
top += fontSize * 1.3;
if (i === text.length - 2) top += 10;
});
}}
&nbsp;
 
let tg = new GrabsteinGenerator();
</script>
 



In Zeile 151 die Adresse von Dateianweisung laden eintragen.

Ich hoffe, ich konnte es gut und verständlich erklären.

Bei meinem guten freund auch installiert, hier kann man testen.

Test Grabstein meißeln mit download!

Ich benutze das -→>>> Template Business Template (v4) <<<←---

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!