[GastForen Programmierung/Entwicklung JavaScript Inhalt eines canvas elments im Quelltext anzeigen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

7. Dez 2010, 10:00
Beitrag # 1 von 14
Bewertung:
(7259 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hello ihr Javascripter,

ist mein Thema verständlich? Ich habe null Erfahrungen mit JS und HTML. Benutze es aber viel in InDesign und After Effects.

Also ich habe dieses Javascript
http://project.the-moron.net/jsascii/jsascii.js
und diese html Seite.
http://project.the-moron.net/jsascii/jsascii.html
Was ich jetzt gerne wissen würde ist:

Wie kriege ich es hin den String den das Javascript erzeugt zurückzugeben?
Ich möchte den Output eigentlich nicht im Browser haben sondern in einem String den ich aus dem InDesign heraus abfragen kann.
Dazu benutze ich diese Skripte http://stdbrouw.github.com/Extendables/.

Zur Zeit bekomme ich nur den Inhalt der .html Seite zurück. Was ich aber haben will ist das was die function jsAscii() zusammenbaut.

Kann mir jemand weiterhelfen?

Danke

:F
X

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

30. Dez 2010, 21:31
Beitrag # 2 von 14
Beitrag ID: #460565
Bewertung:
(7103 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi fabian,

da ich selbst leider die xtendables scripte nicht kenne kann ich nur mal raten. Du rufst darüber vermutlich nun die URL deiner hmtl-Seite auf und kriegst dann natürlich nur deren Quelltext zurück und nicht das was von der jquery funktion gemacht/manipuliert wurde.

ich denke eine lösung wäre diese jquery funktion so umzubauen, das Du diese direkt aufrufen kannst und dann den dort drinn generierten String vom Aufruf zurückbekommst.

Eine andere Lösung - sprich den Quelltext nach der JQuery manipulation über eine URL - zurückzubekommen, sehe ich nicht. Dazu müsste die Funktion vermutlich nach .php Umgeschrieben werden und dann könnte man den String im Quelltext ausgeben lassen.

mfg
chris.w.


als Antwort auf: [#459076]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

2. Jan 2011, 18:51
Beitrag # 3 von 14
Beitrag ID: #460647
Bewertung:
(7053 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey Chris, danke für die Antwort.
Erstmal. Ja ich rufe die URL ab.

Was müsste ich denn ändern damit mir der entsprechende String zurückgegeben wird?
Das JS das ich verwende ist hier http://project.the-moron.net/jsascii/jsascii.js und der String den ich, meiner Meinung nach brauche, ist:
Code
strChars 

In Zeile 56 deklariert.

Aber wie sage ich dem JS jetzt das es den String zurückgeben soll? Ich habe bereits versucht hier und da ein return einzubauen, aber das hat nichts geholfen.
Über einen Tip würde ich mich sehr freuen.
Grüsse

:F

P.S. Die Extendebles lib gibts hier http://stdbrouw.github.com/Extendables/


als Antwort auf: [#460565]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

3. Jan 2011, 17:07
Beitrag # 4 von 14
Beitrag ID: #460727
Bewertung:
(7019 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi fabian,

also ich könnte dir grundsätzlich das js so anpassen, das es über den direkten aufruf der Funktion den nötigen String zurück gibt. Habe das soeben bei mir ausprobiert und würde funktionieren. Es muss dann aber mind. der Bildpfad und die Grösse mitgegeben werden, damit das klappt.

Bevor ich das nun hier aber poste, müsste ich wissen ob dir das überhaupt etwas bringt. Kannst Du aus dem InDesign oder über diese Extendables direkt externe javascript-funktionen aufrufen/einbinden?

Was wir so nicht hinbekommen werden, ist dieser String direkt in den Quelltext einer Webseite zu schreiben, welchen Du dann über einen Ajax-Call oder über diese Extendables auslesen könntest, denn dort wirst Du nur immer den eigentlichen Quelltext mit dem javascript-Funktionsaufruf sehen, was Du ja nicht willst.

Wobei ich jetzt noch eine andere Idee hatte und zwar könnte man den Rückgabewert der jsFunktion in ein Formularfeld schreiben, dieses dann versenden und wenn die Daten zurückkommen diese in der Webseite ausgeben. Das ganze ist relativ einfach mit .php + .js zu lösen. Die Frage dort ob es möglich ist über die Extendables ein Redirect/Formsubmit zu erlauben oder ob er diesem dann eben nicht folgen wird.

Ich habe Dir zu Testzwecken mal die umgebaute .js und die Webseite weiter unten angehängt. Der js-Funktionsaufruf innerhalb der php-Seite hat folgende Parameter (BildPfad, Breite, Höhe, Formularfeld) und danach alle anderen die auch vorher im alten .js als Bildattribute möglich waren. Für den direkte js-Funktionsaufruf einfach einen leeren String für den Parameter formfield übergeben.

Sage mir doch ob Du das auf irgendeine Art brauchen kannst. Also entweder der direkte .js-Funktionsaufruf oder über die Url ;)

guten Start ins 2011 ;) und mfg
chris.w.

Code
================= 
jsascii.js
=================
var aDefaultCharList = (" .,:;i1tfLCG08@").split("");
var aDefaultColorCharList = (" CGO08@").split("");
var strFont = "courier new";

// convert img element to ascii
function asciifyImage(oImgSrc, oImgWidth, oImgHeigth, formfield, iScale, bColor, bAlpha, bBlock, bInvert, strResolution, aCharList)
{

var oImg = new Image(oImgWidth, oImgHeigth);
oImg.src = oImgSrc;

var oCanvas = document.createElement("canvas");
if (!oCanvas.getContext) {
return;
}
var oCtx = oCanvas.getContext("2d");
if (!oCtx.getImageData) {
return;
}

var formfield = formfield || "";
var iScale = parseInt(iScale) || 1;
var bColor = (bColor == "true");
var bAlpha = (bAlpha == "true");
var bBlock = (bBlock == "true");
var bInvert = (bInvert == "true");
var strResolution = strResolution || "medium";
var aCharList = aCharList ||
(bColor ? aDefaultColorCharList : aDefaultCharList);

var fResolution = 0.5;
switch (strResolution) {
case "low" : fResolution = 0.25; break;
case "medium" : fResolution = 0.5; break;
case "high" : fResolution = 1; break;
}

var iWidth = Math.round(parseInt(oImgWidth) * fResolution);
var iHeight = Math.round(parseInt(oImgHeigth) * fResolution);

oCtx.drawImage(oImg, 0, 0, iWidth, iHeight);
var oImgData = oCtx.getImageData(0, 0, iWidth, iHeight).data;

var strChars = "";

for (var y=0;y<iHeight;y+=2) {
for (var x=0;x<iWidth;x++) {
var iOffset = (y*iWidth + x) * 4;

var iRed = oImgData[iOffset];
var iGreen = oImgData[iOffset + 1];
var iBlue = oImgData[iOffset + 2];
var iAlpha = oImgData[iOffset + 3];

if (iAlpha == 0) {
var iBrightIdx = 0;
} else {
var fBrightness = (0.3*iRed + 0.59*iGreen + 0.11*iBlue) / 255;
var iCharIdx = (aCharList.length-1) - Math.round(fBrightness * (aCharList.length-1));
}

if (bInvert) {
iCharIdx = (aCharList.length-1) - iCharIdx;
}
var strThisChar = aCharList[iCharIdx];

if (strThisChar == " ")
strThisChar = "&nbsp;";

if (bColor) {
strChars += "<span style='"
+ "color:rgb("+iRed+","+iGreen+","+iBlue+");"
+ (bBlock ? "background-color:rgb("+iRed+","+iGreen+","+iBlue+");" : "")
+ (bAlpha ? "opacity:" + (iAlpha/255) + ";" : "")
+ "'>" + strThisChar + "</span>";
} else {
strChars += strThisChar;
}
}
strChars += "<br/>";
}


var fFontSize = (2/fResolution)*iScale;
var fLineHeight = (2/fResolution)*iScale;

// adjust letter-spacing for all combinations of scale and resolution to get it to fit the image width.
var fLetterSpacing = 0;
if (strResolution == "low") {
switch (iScale) {
case 1 : fLetterSpacing = -1; break;
case 2 :
case 3 : fLetterSpacing = -2.1; break;
case 4 : fLetterSpacing = -3.1; break;
case 5 : fLetterSpacing = -4.15; break;
}
}
if (strResolution == "medium") {
switch (iScale) {
case 1 : fLetterSpacing = 0; break;
case 2 : fLetterSpacing = -1; break;
case 3 : fLetterSpacing = -1.04; break;
case 4 :
case 5 : fLetterSpacing = -2.1; break;
}
}
if (strResolution == "high") {
switch (iScale) {
case 1 :
case 2 : fLetterSpacing = 0; break;
case 3 :
case 4 :
case 5 : fLetterSpacing = -1; break;
}
}

strChars = "<table cellpadding='0' cellspacing='0' style='width:" +
Math.round(iWidth/fResolution*iScale) + "px" +
";height:" + Math.round(iHeight/fResolution*iScale) + "px" +
";white-space:pre;margin:0px;padding:0px" +
";letter-spacing:" + fLetterSpacing + "px" +
";font-family:" + strFont +
";font-size:" + fFontSize + "px" +
";line-height: " + fLineHeight + "px" +
";text-align:left;text-decoration:none;'><tr><td>" + strChars + "</td></tr></table>";

if (formfield != "" && document.getElementById(formfield)) {
document.getElementById(formfield).value = strChars;
} else {
return strChars;
}
}


=================
jsascii.php
=================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jsascii.js"></script>
</head>
<body>
<?php
if(empty($_POST)){
echo '<form id="form1" action='.$_SERVER['PHP_SELF'].' method="post">
<input id="formfield" name="formfield" type="hidden" value="" />
</form>
<script language="javascript" type="text/javascript">
asciifyImage("the_hand.png", 250, 240, "formfield");
document.forms["form1"].submit();
</script>';
}else{
echo stripslashes($_POST['formfield']);
}
?>
</body>
</html>



als Antwort auf: [#460647]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

4. Jan 2011, 10:16
Beitrag # 5 von 14
Beitrag ID: #460745
Bewertung:
(6986 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow. Ich bin schon ganz aufgeregt und habe feuchte Hände. :)
Ich setze mich jetzt mal ran und bastle ein wenig.
Heute abend gebe ich mal ein Update.
Aber vorab schonmal ein riesiges Dankeschön und ebenso ein frohet Neuhet.

:F


als Antwort auf: [#460727]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

4. Jan 2011, 12:05
Beitrag # 6 von 14
Beitrag ID: #460750
Bewertung:
(6975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm, die ersten Hürden.
Ich habe die .php und die .js Dateien jetzt auf meiner Webseite, aber kriege weiterhin nur das rohe html zurück.

PHP -> http://www.the-moron.net/.../jsascii/jsascii.php
JS -> http://www.the-moron.net/...jsascii/jsascii_2.js

Sry aber ich bin leider ungeübt mit JS im Web. Ich benutze es bisher nur in Verbindung mit InDesign und After Effects.

Ein paar Fragen:

Welche URL muss ich genau senden um das Formularfeld mitzusenden und dessen Ergebnis zu bekommen?
Code
"http://www.the-moron.net/project/jsascii/jsascii.php?formfield=" 


Wenn ich de .php direkt aufrufe. Kriege ich das Ascii Bild angezeigt.
Kann ich das so verstehen das hier der String auch erst nach der Anfrage erzeugt wird?


In der Extendables lib gibt es das Objekt response http://extendables.org/...tml#response-objects
Das kann auch redirects haben. http://extendables.org/...eadme.html#redirects

Wenn ich aber versuche zB die
Code
response.redirects.length 

abzufragen bekomme ich 0 zurück.
Mache ich bei der Anfrage etwas falsch? Bestimmt.

Ich freue mich sehr über deine Hilfe und schäme mich für jede doofe Frage.

Grüsse :F



****************
Meinem Code soweit:
Code
#include "./Extendables/extendables.jsx"; 
var http = require('http');

// We call the generic 'is' method provided by the framework:
if( !app.is('indesign') )
{
// Extendables's EnvironmentError:
throw new EnvironmentError( "This script only works in InDesign." );
}



if( !http.has_internet_access() )
{
// HTTPError is provided by the http module
throw new HTTPError("No internet access.");
}

var req = new http.HTTPRequest("GET", "http://www.the-moron.net/project/jsascii/jsascii.php?formfield=");
req.follow_redirects(true);
var timeout = req.timeout();
req.timeout(10);
var res = req.do();

alert(res.body);

****************
P.S.
Ich hatte bereits mit einem Freund etwas an diesem Problem weitergearbeitet und er ist auch auf eine .php Lösung gekommen.
zu finden hier (demo) -> http://project.the-moron.net/...ciiify.php?demo=true
Quellcode -> http://project.the-moron.net/.../sweet_asciiify.phps
Leider ist da das Ascii Bild nicht so schick wie in dem jsascii_2.js.
Das kann ich jedoch direkt laden.


als Antwort auf: [#460727]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

4. Jan 2011, 14:09
Beitrag # 7 von 14
Beitrag ID: #460760
Bewertung:
(6960 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi fabian,

ja jetzt kommen wir der Geschichte ja schon mal näher ;) also die Idee das von .js nach .php umzuschreiben, ist natürlich gar nicht schlecht, ihr müsstet dann einfach noch schauen, das diesselben elemente um diesen Char-String gelegt werden, wie in meinem Beispiel, damit es innerhalb eines Browser auch korrekt dargestellt wird. Also eine Table mit dem style-Attribut und den nötigen Einstellungen. Etwas anderes wird da nicht funktionieren.

Meine Idee erstellt den nötigen String via javascript, füllt diesen in ein Formularfeld und sendet das Formular danach an dieselbe Seite ab. Sobald dieses mit Daten zurückkommt, werden diese auf der Seite ausgegeben.

Gehe ich jetzt richtig der Annahme, das Du in deinem String nicht die eigentliche Hand siehst, sondern wiederum nur den Quelltext der Seite mit dem eigentlichen Formular?

Wenn dem so wäre, müssten wir mal schauen, wie wir es hinbringen das mit dem httprequest es möglich ist einem javascript formsubmit zu folgen.

werde mich wieder melden :)

gruss
chris.w.


als Antwort auf: [#460750]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

4. Jan 2011, 15:29
Beitrag # 8 von 14
Beitrag ID: #460761
Bewertung:
(6938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi fabian,

also das mit dem formsubmit geht nicht, da ein response.redirect gemacht werden müsste und dieser wiederum funzt nur mit get-Daten. Diese sind von der länge her limitiert und für unseren Zweck unbrauchbar.

Jetzt gäbe es noch 2 andere Lösungsansatze:

1. Das schreiben des strings der .js-Funktion in ein cookie, response.redirect machen und beim zurückkommen auf die Seite, den Cookieinhalt auslesen. Aber auch das wäre von der länge her limitiert.

2. Generieren des Strings und absenden über einen AJAX-Post an ein .php auf dem Server, welches diesen String entweder in eine DB oder eine Datei schreibt. Danach einen response.redirect und beim zurückkommen auslesen der Daten aus der DB oder der genierten Datei.

Beides sollte eigentlich funktionieren, wobei die Variante 2 evtl. ein bisschen aufwändiger ist, aber keine längen Beschränkung hätte.

Das andere ist natürlich das .php-Script weiter zu entwickeln, damit dort derselbe effekt erzeugt wird. Versuche mal die Ausgabe dort drin folgendermassen umzubauen:

Code
if ($demo) { 
echo '<table cellpadding="0" cellspacing="0" style="'.
'width:'.$width.'px;height:'.$height.'px;'.
'white-space:pre;margin:0px;padding:0px;letter-spacing:0px;'.
'font-family:courier new;font-size:1px;line-height:1px;'.
'text-align:left;text-decoration:none;"><tr><td>';
echo $string;
echo '</td></tr></table>';
} else {
echo $string;
}


Jetzt kannst Du natürlich noch mit den grössen rumspielen. Zum Beispiel fontsize 4 und lineheigt 2, damit sieht es schon mal recht schön aus :)

gruss
chris.w.


als Antwort auf: [#460760]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

4. Jan 2011, 16:07
Beitrag # 9 von 14
Beitrag ID: #460765
Bewertung:
(6931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich habe dir hier sonst noch eine klasse mit der Du ein bisschen rumspielen kannst:

Code
================= 
ASCIIFY.php
=================
<?php
class ASCIIFY
{
var $replace_characters = array (
1 => "#",
2 => "W",
3 => "M",
4 => "B",
5 => "R",
6 => "X",
7 => "V",
8 => "Y",
9 => "I",
10=> "t",
11=> "i",
12=> "+",
13=> "=",
14=> ";",
15=> ":",
16=> ",",
17=> ".",
);

var $image_types = array (
1 => "GIF",
2 => "JPEG",
3 => "PNG"
);

var $image = NULL;
var $error=false;
var $image_height = 0;
var $image_width = 0;

function renderPixel($x, $y)
{
$rgb = imagecolorsforindex($this->image, imagecolorat($this->image, $x, $y));
$brightness = $rgb["green"] + $rgb["green"] + $rgb["blue"];
$replace_character_id = round($brightness / 50) + 1;
$this->image_html .= $this->replace_characters[$replace_character_id];
}


function ASCIIFY($image_name, $resolution)
{
list($width,$height,$type) = getimagesize($image_name);
switch ($type) {
case 1:
case 2:
case 3:
eval("
if (!\$this->image = @imagecreatefrom".$this->image_types[$type]."(\"".$image_name."\"))
\$this->error=true;
");
if ($this->error) {
echo("Cannot handle ".$this->image_types[$type]);
die();
}
$this->image_height = $height;
$this->image_width = $width;
for ($y = 0; $y < $this->image_height; $y += $resolution)
{
for ($x = 0; $x < $this->image_width; $x += $resolution)
{
$this->renderPixel($x, $y);
}
$this->image_html .= "\n";
}
break;
default:
echo("invalid image type.");
die();
}
}
}
?>
=================
example.php
=================
<?php
require ("ASCIIFY.php");
$resolution=3;
$DemoPicture = new ASCIIFY('the_hand5050.png', $resolution);
echo '<table cellpadding="0" cellspacing="0" style="'.
'white-space:pre;margin:0px;padding:0px;letter-spacing:0px;'.
'font-family:courier new;font-size:6px;line-height:4px;'.
'text-align:left;text-decoration:none;"><tr><td>';
echo $DemoPicture->image_html;
echo '</td></tr></table>';
?>


Zitat Angepasst aus:
http://www.opendb.net/element/222.php



als Antwort auf: [#460761]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

4. Jan 2011, 17:15
Beitrag # 10 von 14
Beitrag ID: #460771
Bewertung:
(6917 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow. Voll cool. Die Klasse probiere gleich mal aus.
Ich habe jetzt mal deinen Code in die sweetasciify.php reingehauen. Jetzt sieht es auch im Demomodus gut aus :) Thnx.
Zu sehen hier -> http://project.the-moron.net/...ciiify.php?demo=true

Die Probleme mit unserer php Skript Variante sind folgende:
1. Es frisst derzeit nur .png
2. Da ist es ein wenig unklar was für ein .png
PNG-8
nicht interlaced
keine transparenz
srgb profil
Scheint gut zu sein, aber irgendwie hat es nicht so richtig "failsave" funktioniert. Ausserdem bringt es gerne den Browser zum abstürzen wenn ich eine Bild Url mitschicken will. :)
Daher hatte ich an die JS Variante gedacht. Die scheint alles an Bild zu fressen.

Ich werde mal mit deiner Klasse ASCIIFY rumspielen.

Eine weitere Variante wäre das JS für Photoshop umzubauen und ein Textfile auszugeben.

Werde noch etwas denken und basteln.
Grüsse
:F


als Antwort auf: [#460765]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

4. Jan 2011, 17:25
Beitrag # 11 von 14
Beitrag ID: #460772
Bewertung:
(6913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ok ja alles klar. Du könntest natürlich auch die gewissen funktionen aus der klasse in Dein .php-Script übernehmen, je nach dem, welche für deinen Zweck dann besser funktioniert.

leider kenne ich mit indesign oder photoshop js zuwenig aus, um zu wissen, was dort genau umgebaut werden müsste, damit es auch darüber funktioniert.

lasse mich wissen, wenn ich Dir noch irgendwie weiterhelfen kann. ich finde das ganze schon mal ziemlich kool. übrigens die originalklasse hat aus diesem string wieder ein bild gemacht, das könnte man sich natürlich auch noch überlegen.

gruss
chris.w.


als Antwort auf: [#460771]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

4. Jan 2011, 18:27
Beitrag # 12 von 14
Beitrag ID: #460775
Bewertung:
(6896 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jau das ist sehr cool.
das funktioniert das ins ID zu kriegen (siehe Bild-> http://project.the-moron.net/asciify/ascii2ID.jpg).
Es hat zwar 5 Minuten gedauert aber es geht.
Deine Klasse ist jetzt hier online -> http://project.the-moron.net/asciify/example.php
Ich habe noch Leerzeichen zu den verwendeten Glyphen hinzugefügt, damit die ganz hellen Pixel des Bildes keine Zeichen sind.
Eine Frage noch:
Ich wollte den "Step" für die Zuordnung der Helligkeitswerte in Zeile 44
Code
$replace_character_id = round($brightness / 40) + 1; 

anhand der Menge an Zeichen im String Array berechnen.
Ungefähr so:
Code
$replace_character_id = round($brightness / 765 / (count($replace_characters))) + 1; 

Aber das lässt den Browser abschmieren. Wie Frage ich das den richtig ab?

*******
Mit dem auslesen aus PSD hatte ich auch mal rumexperimentiert.
Und hier fliegen auch Processing Varianten herum -> https://github.com/...sciiify/prcssngascii.

Sobald ich Zeit habe werde ich mal versuchen alle Lösungen zusammenzutragen und ein bisschen zu dokumentieren.

Dank dir nochmal.

Ach ja und zur Not gehts ja immer noch Copy&Paste aus dem Browser. :)

:F


als Antwort auf: [#460772]

Inhalt eines canvas elments im Quelltext anzeigen

crisies
  
Beiträge gesamt: 138

4. Jan 2011, 19:42
Beitrag # 13 von 14
Beitrag ID: #460777
Bewertung:
(6872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi fabian,

also ich denke Du müsstest das folgendermassen machen, damit es anhand der Anzahl zu ersetzenden Zeichen funktioniert.

Code
============== 
Das Original
==============
$brightness = $rgb["green"] + $rgb["green"] + $rgb["blue"];
$replace_character_id = round($brightness / 50) + 1;
==============
Angepasst
==============
$brightness = $rgb["red"] + $rgb["green"] + $rgb["blue"];
$replace_character_id = round($brightness / (765 / (count($this->replace_characters) -1 ))) + 1;


Im Original gab es in der brightness noch einen Fehler, dort war 2x green angegeben und red fehlte ganz ;)

In der angepassten Sache, wird im zweiten neuen Teil anstatt einem fixen maximalen Teiler von 50, ein dynamischer berechnet, gem. der angegebenen Anzahl der replace_characters. Das Ziel ist es ja dort bei maximaler helligkeit von 765, das letzte Zeichen aus dem replace-Array zu erhalten und das sollte so nun funktionieren.

mfg
chris.w.


als Antwort auf: [#460775]

Inhalt eines canvas elments im Quelltext anzeigen

fabiantheblind
Beiträge gesamt:

5. Jan 2011, 08:20
Beitrag # 14 von 14
Beitrag ID: #460804
Bewertung:
(6843 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Yau das funzt.

Danke dir tausend mal.

:F


als Antwort auf: [#460777]
X