|< < 1 > >|

GimpPython Plguin: Add all open Images as layer into one

Posted on: 01-05-2015 by sid

I’ve just created a little script to make time stacking pictures easier. It just adds all open pictures into the current selected one.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# GIMP plugin to set all visible layers to the same mode
# (c) steffakasid 2012
#
#   History:
#
#   v1.0: 2015-30-04: First published version
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

from gimpfu import *

def openImagesAsLayers(selected_image,debug):
    try:
        if(debug == True):
            gimp.message("Starting to add all images...")

        selected_image_name = pdb.gimp_image_get_name(selected_image)

        if(debug == True):
            gimp.message("Base image selected: "+selected_image_name)

        image_file_list = gimp.image_list()
        if(debug == True):
            gimp.message("Received file list: "+str(image_file_list))

        for image_to_load in image_file_list:
            image_path = pdb.gimp_image_get_filename(image_to_load)
            image_name = pdb.gimp_image_get_name(image_to_load)
            if(debug == True):
                gimp.message(image_path)

            if(selected_image_name == image_name):
                if(debug == True):
                    gimp.message("Skipping selected image to not add it again: "+selected_image_name)
            else:
                # load image as new layer of the selected_image
                layer = pdb.gimp_file_load_layer(selected_image,image_path)

                if(layer is None):
                    if(debug == True):
                        gimp.message("The image "+image_path+" could not be transferred into a new layer!")
                if(debug == True):
                    gimp.message("Adding layer")

                # Add new layer to the selected_image
                pdb.gimp_image_insert_layer(selected_image, layer, None, 0)

                # Close image when it was added
                gimp.delete(image_to_load)
                gimp.displays_flush()
    except Exception as err:
        gimp.message("Unexpected error: " + str(err))

    gimp.message("Processing finished!")

### Registrations

register(
    "open-images-as-layers",
    "Adds all images into the selected one as new layers!",
    "Adds all images into the selected one as new layers!",
    "steffakasid",
    "steffakasid",
    "2015",
    "Add open images into one as new layers",
    "*",
    [
        (PF_IMAGE, "image", "Input image", None),
        (PF_BOOL, "debugging", "Enable debugging. Error Console should be open!", False)
    ],
    [],
    openImagesAsLayers,
    menu="<Image>/Image")

main()

Got Android 2.3.7 on my X10 mini

Posted on: 06-11-2011 by sid

Hey finally I got Android 2.3.7 working on my Sony Ericsson X10 mini. Which is currently not official supportet and I guess it will never be supported by Sony Ericsson. So I used a custom rom build by CyanogenMod (http://www.cyanogenmod.com). It was not such easy because there was no 1:1 howto and I had to search multiple howto’s (programs and kernels as well) for each step. In the meantime I fleshed with a wrong kernel what leads to system freeze during bootup and was much trouble to flash it back, because it didn’t let me into flash mode. So this post is also not a all in one howto but it lists all needed steps with corresponding links to the howto’s for the details and hopefully it will help others to got it working easier then for me.

So which steps are required to get Android 2.3.7 working. Basicly this are the following steps:

  1. Root your phone

  2. Unlock the bootloader

  3. Flash new kernel with ClockworkMod Recovery

  4. Install new Rom

I recommend to get at first the new customs roms. For the x10 mini mobile you can find them here: http://forum.cyanogenmod.com/topic/32778-cyanogenmod-7-for-the-xperia-x10-mini-v710-11-oct-2011/ I also recommend to download the clean mod and the google apps either. Because the google apps make it much easier to enable a google account on the phone. When you downloaded the mod put it on the sdcard of your phone.

The next step is rooting the phone. This can be easily done by using flashtool. How to get it and to use it is described here: http://forum.xda-developers.com/showthread.php?t=920746

When the phone is rooted we are now able to unlock the bootloader. A description how doing that can be found at: http://forum.xda-developers.com/showthread.php?t=1254225

When we have a unlocked bootloader we can go on flashing the device with a kernel which has ClockwordMod Recovery with it. For that I used the following kernel (I guess it is a x10 mini kernel for the newer replacement model but for me it works with some limitation) http://forum.xda-developers.com/showthread.php?t=1309972 To get into the recovery mode was a little bit strange for me. If your boot you phone, you will the a damaged blured image. What I did was pressing all the menu key and the back key of the phone several times and then I got into the recovery mode (I can not finally say what was the right key but I guess it must be the menu key :) ). When you are in recovery mode you can install the rom by using install zip file from sdcard (you have to choose the zip file you put on the sdcard on the begining and you have to do it twice if you also want to install the google apps; first start cyanogenmod second the googleapps zip). If that is finished you only have to go back and use a "working" kernel, so I used the kernel provided in the cyanogenmod zip file and created a custom "flash package". How to do that is described here:  http://androidforums.com/2243505-post4.html

Maybe its also possible to to the installation with that last kernel but I did not tried that. Whats here described is my way to do it and what worked for me.

At least it has to be said that I give no quaranty that this way will work for you and I also give no quarantiy for damage on your phone while doing flash stuff etc. so if you try it, you try it on your own risk.

Issues with the new rom:

  1. There is one big issues I currently have: Its related to low voice volume during phone calls. I hope that will be fixed soon. I’am not sure if it is related to the kernel or a problem of the dialer app so I will try another dialer maybe it will be better.

  2. One second issue which is annoying but not such a big thing. This is related to the 3G internet mode which sometimes crashes and then didn’t gets any internet access. So in this point I had to reboot my phone then its working again.

News about the mod can be found at the cyanogenmod page so visit there to be updated.

Happy flashing ;)

Homescreen:

Homescreen unlocked
Homescreen locked

System Information after update:

screenshot-1320000423804
screenshot-1320000369306
I maybe found something better (not tried right now but seems so). Will try it on the weekend or maybe earlier. Its a custom rom based on CM7.1 specially for X10 mini. So hopefully the issues listed above are fixed there: http://forum.xda-developers.com/showthread.php?t=1068553
— Update: 10-11-2011 by sid

Create multiline textbox with scrollbar in JavaFX

Posted on: 04-11-2010 by sid

Currently I just played around with JavaFx. For the program I had build I had to use a multiline textbox with scrollbar. After some work here is the result:

 /*
*TextboxMultline.fx
*
*Created on Nov 4, 2010, 13:55:56 PM
*/

package de.steffakasid.ui;

import javafx.scene.Group;
import javafx.scene.control.ScrollBar;
import javafx.scene.effect.InnerShadow;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextOrigin;

public class TextboxMultiline extends Group {
    public var width: Float;
    public var height: Float;
    public var backgroundColor: Color;
    public var foregroundColor: Color;
    public var textContent: String;
    public var wrappingWidth: Float;
    public var font: Font;

    public var enableHorizontalScroll : Boolean = false;
    public var enableVerticalScroll : Boolean = false;
    public var enableAutoScroll: Boolean = false;

    var clipper: Rectangle = Rectangle {
        width: bind width - 10,
        height: bind height - 10,
        y: bind (text.translateY *  - 1) + 5;
        x: bind (text.translateX *  - 1) + 5;
    };
    var text: Text = Text {
        x: bind scrollBarVertical.width,
        y: 5,
        font: bind font,
        fill: bind foregroundColor,
        textOrigin : TextOrigin.TOP,
        translateY: bind 0 - scrollBarVertical.value,
        translateX: bind 0 - scrollBarHorizontal.value,
        clip: clipper,
        wrappingWidth: bind wrappingWidth;
    };
    var textBackground: Rectangle = Rectangle {
        arcHeight : 10,
        arcWidth : 10,
        width: bind width,
        height: bind height,
        fill: bind backgroundColor,
        effect: InnerShadow {
            choke: 0.01,
            offsetX: 0,
            offsetY: 0,
            radius: 5,
            color: javafx.scene.paint.Color.BLACK,
        }
    };
    var scrollBarVertical: ScrollBar = ScrollBar {
        height: bind height
        blockIncrement: 10
        clickToPosition: true
        min: 0
        max: bind if(text.layoutBounds.height > height) text.layoutBounds.height - height else 1 ,
        vertical: true
        visible: bind if((height - 10) < text.layoutBounds.height) true else false;
    }

    var scrollBarHorizontal: ScrollBar = ScrollBar {
        layoutY: bind height - 1,
        width: bind width,
        blockIncrement: 1,
        clickToPosition: false,
        min: 0,
        max: bind if(text.layoutBounds.width > (width - 10)) text.layoutBounds.width - (width - 20) else 1,
        vertical: false,
        visible: bind if(text.layoutBounds.width > (width - 20)) true else false,
    }

    init {
        if(null == foregroundColor) {
            foregroundColor = Color.BLACK;
        }
        if(null == backgroundColor) {
            backgroundColor = Color.WHITE;
        }
        if(null != textContent) {
            text.content += textContent;
        }

        this.content = [
        textBackground,
        text
        ];
        if(enableVerticalScroll == true) {
            insert scrollBarVertical into this.content
        }
        if(enableHorizontalScroll == true) {
            insert scrollBarHorizontal into this.content
        }
    }

    public function setText(textContent: String) {
        text.content += textContent;
        if(enableAutoScroll == true) {
            scrollBarVertical.value = scrollBarVertical.max;
        }
        println("Text bounds: {text.layoutBounds}");
        println("Scrollbar max: {scrollBarVertical.max}");
    }
};

Install busybox on Android

Posted on: 18-08-2010 by sid

Da die meisten anderen Tutorials unvollständig waren, hab ich mir mal die Mühe gemacht, die vollständige Anleitung zu veröffentlichen.

  1. Get busybox (fertig kompiliert für Android) http://files.spacefish.biz/busybox

  2. Android Phone mit dem PC verbinden (Anleitung gibts hier: http://developer.android.com/guide/developing/device.html

  3. Push busybox auf das Device (alle adb Befehle müssen aus dem android-sdk/tools Verzeichnis gestartet werden, wenn diese sich nicht in der PATH Variable befindet!)

$ ./adb push busybox /data/local/busybox

Aufgrund der Schreib- bzw. Ausführungsrechte sollte dieses Verzeichnis so beibehalten werden, da sonst busybox nicht ausführbar ist, wenn es beispielsweise auf die Sdcard gepusht wird!

  1. Auf das Telefon mit einer Konsole connecten und Telefon vorbereiten

./adb shell
$ su
$ mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
$ exit
  1. Busybox installieren

$ su
$ cd /data/
$ mkdir busybox
# Wenn xbin nicht existiert:
$ mkdir /system/xbin
# sonst direkt:
$ /data/local/busybox cp /data/local/busybox /system/xbin/busybox
$ cd /system/xbin
$ chmod busybox 755
$ ./busybox --install -s /system/xbin
$ rm /data/local/busybox

Achtung! Teilweise (beispielsweise der cp) Befehl sind nicht bestandteil der in Android verwendeten Shell daher muss in diesem Fall der Befehl aus Busybox verwendet werden. Daraus resultiert der etwas seltsam aussehende Befehl!

  1. Telefon neu starten

Busybox Befehle lassen sich dann in der Shell über busybox aufrufen beispielsweise "busybox df". Optional kann man /data/busybox auch noch der PATH Variable zuordneten:

$ export PATH=/data/busybox:$PATH

Falls jemand noch Anmerkungen hat. Einfach anschreiben…​

Sie heißt FMC 2153 Neo L…​

Posted on: 10-07-2010 by sid

hat 600W an 4 Ohm, zwei schaltbare 8" und ein regelbare Horn und ist seit gestern die neue Box unter meinem Ampeg AP-3550 und SVT-IIP. Aber von FMC 2158 Neo L vorne…​ nach ca. 4 Monaten Diskussionen mit Hans (Hans Struck = Eigentümer von FMC), viel lesen zu FMC Boxen auf bassic.ch und schluss endlich reiner Wartezeit aufgrund der Terminplanung von Hans war es gestern endlich so weit und ich konnte nach Ingolstadt fahren und meine Box in Empfang nehmen. Kleiner Tip am Rande: Wenn ihr die Möglichkeit habt fahrt auf jeden Fall persönlich in Ingolstadt vorbei. Wieso? Naja Hans ist super nett und erklärt euch alles rund um die Boxen - aus erster Hand - führt sie selber vor und gibt ansonsten noch jede Menge persönliche Erfahrungen und Tips zu den eigenen Boxen.

Wieder in Mannheim angekommen ging es direkt erstmal in den Poberaum, die Box am eigenen Verstärker testen. Der erste Eindruck war einfach nur WOOOW . Die Box ist im Vergleich zu meiner alten (4*10 Hartke VX) mindestens 1/3 lauter .

Heute ging es dann wieder in den Proberaum ausführliches testen und aufnehmen mit unterschiedlichen Settings (wobei da noch unendlich weitere Möglichkeiten drin sind alleine aufgrund des regelbaren Horns). Aber für einen zweiten Eindruck war das auf jeden Fall mal super. Am besten gefällt mir persönlich momentan die Einstellung mit abgeschalteten Horn und den 8"ern auf der niedrigen Frequenz. Das ergibt einfach einen so genial knurrigen Sound mit viel Attack, mit angeschaltetem Horn wird das Ganze noch ne ziemliche Ecke spritziger was vor allem fürs Slappen ziemlich geil kommt. Dabei liefern die 15"er immer schön viel Tiefbass.

Zu den Soundfiles: Alle Aufnahmen habe ich mit den gleichen Settings gemacht (zumindest für die FMC Box, für die Hartke musste ich den Amp um einiges weiter aufdrehen um überhaupt was zu hören…​). Eingespielt wurde alles mit meinem Warwick Fortess One. Wobei ich beide Picups aktiv hatte (Regler in Mittelposition) auf dem Halsnahen PU hatte ich die Höhenblende ganz rausgedreht und auf dem Settings Singlecoil (Steg PU) die Höhenblende ganz rein. Das entspricht dem Setting, dass ich ziemlich häufig nutze, da mir der Klang einfach total taugt. An der Vorstufe war alles neutral eingestellt, der Presence Regler der Endstufe voll auf (der Volumeregler war anders als auf dem Bild auf ca. 11 Uhr).

Soundfiles:

Meiner Meinung nach merkt man den Unterschied der Boxen bei neutralen Einstellungen noch nicht so stark. Die FMC wirkt insgesamt etwas klarer vom Klangbild und es besteht ein großer Unterschied beim Wirkungsgrad für die Aufnahmen musste ich bei der vx410 ca. 1/4 lauter aufdrehen. Noch stärker fällt der klangliche Unterschied auf, wenn man etwas am EQ rumspielt beispielsweise Bässe aufreißt etc.

Zu den Aufnahmen der FMC Box: Es wären noch viele andere Kombinationen möglich. Da die 8"er sich im Frequenzbereich noch zweistufig schalten lassen (einmal eher höhere und einmal eher tiefere Frequenzen). Das gleiche gilt für das Horn, was zu dem noch stufenlos schaltbar ist. Wenn sich jemand her verirrt und gerne nen bestimmten Klang hören würde (und ich die Zeit finde) kann ich gerne mal noch andere Beispiele hinzufügen.

Me on myspace

Posted on: 02-06-2010 by sid

Ich bin seit gestern auch auf myspace mit einem Musikerprofil vertreten kann ja nicht schaden …​

Wer Interesse hat und wissen will wie man ein myspace Musikprofil mit CSS designed hier ist das CSS welches ich verwende:

body {
background-image:url(HIER DIE BILDER-URL EINFUEGEN);
background-color:black;
background-repeat:no-repeat;
background-position:left bottom;
background-attachment:fixed;
}

table, tr, td {
background-color:transparent;
border: none;
border-width:0px;
color:ffc600;
}

table table table { background-color:000000; border: none; border-width:0px; color: ffc600}

p {background-color:white;}

.text {color:ffc600}

font, div, .blacktext12, .lightbluetext8, .orangetext15,  .whitetext12, .btext {color:ffc600}

a, a font, a:link, a.navbar, a.navbar:link, a.man, a.man:link, a.man font, a.redlink, a.redlink:link, a.friendlink, a.friendlink:link {color:ffc600; text-decoration:underline}

a.friendtext, a.redlink {text-decoration:none}

a:visited,  a.navbar:visited, a.man:visited,  a.friendlink:visited, a.redlink:visited{color:white; text-decoration:none;
}

Das Ganze postet man einfach in das Feld "Biographie" im Profil und schon ändert sich das Aussehen…​ leider ist es nicht möglich die Friendadd-links zu bearbeiten, da dies Bilder sind…​ aber vielleicht kommt das ja noch.

Schweinegrippe

Posted on: 16-11-2009 by sid

… werden die ganzen Schweine eigentlich auch geimpft? Sonst frag ich mich nur wie die Impfaktion überhaupt die "Pandemie" eindämmen soll…​ meiner Meinung nach die unsinnigste Aktion überhaupt :)

Gut auch, dass von der WHO extra die Pandemie Definition geändert wurde, was unter anderem aus diesem Interview hervorgeht:

Wie dem auch sei: Meiner Meinung nach die best organisierteste PR-Aktion überhaupt…​ und das bittere alle machen mit.

P.s. meines Wissens nach ist die Schweinegrippe bisher nur von Mensch zu Mensch übertragen worden aber die Idee die Schweine mit zu impfen fand ich irgendwie witzig.

Umbau (vorerst) abgeschlossen

Posted on: 20-09-2009 by sid

Erst mal muss ich sagen, dass mich entschlossen habe der Einfachheit halber auch Posts auf deutsch zu schreiben. Mein eigentliches anliegen ist allerdings hier meine Umbauarbeiten an meinem ersten Bass öffentlich zu machen ;)<!--more-→

Dieser Bass ist das Gerät, auf dem ich damals angefangen habe zu spielen. Wie man auf einem der Bilder sehen kann scheinen auch meine Vorbesitzer (keine Ahnung wieviele es davon gab) gerne mal die Farbe des Instruments geändert zu haben. Ich hab das Teil letztens nochmal bei EBay gesehen, muss im original eine sunburst Lackierung gehabt haben (das hatte ich auch schon bei meinen Schleifarbeiten vermutet).

Insgesamt bin ich in meheren Schritten zu dem aktuellen Ergebnis gekommen. In einem ersten Gewaltmarsch habe ich alle Farbe entfernt. Hier einige Bilder:

  1. Hier sieht man sehr schön die verschiedenen Farbschichten:

Slammer-15
  1. Hier die anfängliche Arbeitsumgebung. Ich kann jedem nur raten, solche Arbeiten nicht in der Küche durchzuführen. Dann lieber nen Raum in dem man alles andere rausstellen kann…​ sonst ist das aufräumen und saubermachen nachher mehr als lästig. Ich bin später auf den Flur umgestiegen, da wir hier am wenigsten Möbel etc. stehen haben und alles andere schnell in ein anderes Zimmer transportiert werden konnte. Leider hatte ich da nur einen kleinen Tisch, dass hat das Arbeiten etwas anstrengender gemacht.

Slammer-13
  1. Das Ergebnis nach der ersten Schleifsession (naja gut eigentlich war es die 2. und dauerte ca. eine Woche)

Slammer-7

Ich muss zugeben, dass ich etwas voreilig war und in diesem Zustand auch schon eine erste Öl-Session mit einem Leinöl gemacht hatte. Allerdings war ich mit dem Ergebnis nicht wirklich zufrieden (Bilder erspar ich an dieser Stelle). Daher hab ich mich dann nochmal entschlossen das Holz noch weiter abzutragen. Die obere Schicht bestand hier aus einem sehr dünnen Funier, das beim abschleifen der Farbe leider an einigen Stellen zu dünne geworden war und dadurch die Optik nicht mehr so toll war (ansonsten hätte es noch recht gut ausgesehen). Ich denke ich hab insgesamt eh recht viel Glück gehabt, dass in diesem Bass richtiges Holz verbaut war, bei heutigen Instrumenten bin ich mir da in den unteren Preisklassen nicht wirklich sicher. Zur Not hätte ich mich sonst an eine neue Lackierung wagen müssen.

Hier die Bilder nach der abschließenden Bearbeitung (zu dem Zeitpunkt auch schon bei einigen Proben gespielt). Der Klang gefällt, auch wenn ich nicht mehr genau sagen kann wie er vorher geklungen hat. Ich hatte den Bass, aufgrund einer kaputten Elektronik und einer "Bassauszeit", in den letzten jahren nicht wirklich gespielt.

  1. Korpus komplett

Slammer-29

Übrigens hab ich die kompette Elektronik neu gemacht. Passive <a href="http://www.seymourduncan.com/products/basslines/progressive-1/spb3_quarterpou/">Seymour Duncan SPB-3</a> Tonabnehmer. Ich war wirklich überrascht von dem hohen Output dieser Tonabnehmer. Die blasen so derbe, dass man fast denkt die wären aktiv ;). Dann gabs noch Schaller Mechaniken, ne Gotoh Bridge, ein Grafitsattel, noname Potis und dazu gehörige Knöpfe, zu guter letzt noch ein neues Pickquard von Thomann (das alte war mehrmals lackiert und das nicht wirklich sauber). Mehr Details auf den nächsten Bildern.

  1. Detail Bild Gotoh Bridge und die neuen Knöppe

Slammer-23
  1. Schwarze Schaller Mechaniken (der Hals ist auch abgeschliffen, die Bünde einigermaßen abgerichtet und leider die Klarlacklackierung nicht sonderlich toll. Da muss ich vielleicht nochmal ran. Ich überlege aber noch, ob ich den Hals nicht neu mache bzw. mir einen neuen besorgen - vor ersterem müsste ich mir wohl aber erstmal überlegen wo ich das machen kann :) )

Slammer-28
  1. und weils gerade so schön ist noch ein letztes zum Schluss ;)

Slammer-27

Übrigens (falls sich mal jemand her verirrt, der einen Bassumbau vorhat) es gibt da nen sehr nettes, kleines Forum mit kompetenter Hilfe: Bassbau. Die Jungs dort bauen schon einige Sachen auf sehr krass hohem Niveau…​

P.s. Bei dem Bass handelt es sich um einen Slammer. Ich konnte dazu nicht wirklich viel im Internet finden, es gibt wohl ne Marke die heutzutage unter dem Namen Bässe baut, aber ob es die selbe ist von damals weiß ich nicht. Der Schriftzug sieht zumindest schonmal anders aus…​

Currently working as a Service Designer…​

Posted on: 19-09-2009 by sid

… for at last nearly a year now I am working in (I think) one of the biggest SOA projects in Germany. My task ist to design services. So for now I don’t have to code them. The main goal of this services is to make all services busines object modell (BOM) alligned and to provide process automation. For the design we use UML activity diagrams and we write a service-documentation in MS word which describe how to use this services…

So in my current opinion: “SOA is not dead” 🙂

My new and my old toy

Posted on: 01-04-2009 by sid

Currently I play a lots of bass. So I’ve searched a new teacher and bought a new instrument which I want to present here:

Here is the new one a Esh Various Bass in sandbasted black:

Esh Various
Esh Various Body
Esh Various Impressive

And some picutres of my old Warwick FortressOne in natural oil finish:

Warwick FortessOne Kopfteil
Warwick FortressOne Body

Lets rock :)