TonUINO-Covermaker (online)

Das wäre sehr nett - aber bitte keine Umstände machen. Ich komme über paint.net und etwas mehr Handarbeit auch zum Ziel. :slight_smile:

Hat zufällig jemand ein Skript, in dem ich alle meine Cover auf einen Rutsch erstellen kann z.B. mit Photoshop oder ähnlich?

Ich drucke gerade ein paar Cover mit dem Selphy Drucker auf das Scheckkartenformat, wie klebt man die Biester am besten drauf.

Speichel- und knibbelfest :smiley:

Wichtig wäre noch zu erwähnen, das das Bild Quadratisch sein muss.

Danke erstmal für das tolle Projekt und die vielen Anregungen. Ich habe schon darüber nachgedacht auch mal solche Cover zu drucken und deshalb versucht den Code von Thorsten nach Powershell zu übertragen, damit ich auch mal 10 oder mehr Cover auf einmal erstellen kann. Das Skript sollte sich von hier aus recht einfach auch in die Linux Bash übertragen lassen, da die Syntax von convert usw gleich sein sollte.

Da ich weder php, noch ImageMagick kenne, habe ich mich etwas schwer damit getan die entsprechenden Befehle zu übersetzen und auch die Powershell hat ja so ihre Eigenheiten. Merkwürdig finde ich, dass die Dateigröße bei meinem Skript sehr viel kleiner ist, aber so weit ich sehen konnte gibt es keine sichtbaren Qualitätseinbußen. Ansonsten scheint es ziemlich exakt die gleichen Ergebnisse zu liefern. Ich hoffe es hilft dem ein oder anderen. Hier also eine quick & dirty Übersetzung des Covermakers in Windows Powershell (ImageMagick muss natürlich auch installiert sein - mit den Legacy Tools oder wie die heißen und dem Hinzufügen zur “PATH” Variablen - ist alles im Installationsassistenten von ImageMagick):

$file = "file.jpg"
$width_param=57
$height_param=82

$sizex=identify -format "%[width]" $file
$sizex=$sizex -as [int]
$sizey=identify -format "%[height]" $file
$sizey=$sizey -as [int]

$ratio=($sizex/$sizey)/($width_param/$height_param)

convert -size "$($sizex*$ratio)""x""$sizey" xc:black im_out.jpg

convert -adaptive-resize "$($sizex/10)""x""$($sizey/10)" $file im_background.jpg
convert -gaussian-blur 0x4 im_background.jpg im_background.jpg
convert -adaptive-resize "$($sizex*$ratio)""x""$($sizey*$ratio)" im_background.jpg im_background.jpg

convert im_out.jpg im_background.jpg -compose src-over -gravity center -composite im_out2.jpg
convert im_out2.jpg $file -compose src-atop -gravity center -composite im_out3.jpg
1 „Gefällt mir“

Ich habe mit dem Tool Fotosticker bei DM fertigen lassen . Dabei habe ich festgestellt , dass die Software von DM und Co. die Bilder automatisch an die von DM ( CeWe )vorgegebenen Maße anpasst .
Soll heißen , dass es keinen Sinn hat die Größe der Cover selbst zu ändern .
Da die Sticker etwas zu groß sind muss man an den Längsseiten ein paar Millimeter abschneiden . Dabei gehen unter Umständen wichtige Bildinhalte verloren .
Ist es möglich mit dem Tool an einer Längsseite einen ca. 4 mm breiten, weißen Streifen einzufügen , welchen man dann auf dem fertigen Sticker entfernen kann .

1 „Gefällt mir“

Hallo,
ich versuche den Covermaker zu verwenden. Jedoch habe ich folgendes Problem:
Nach dem auswählen des Bildes und klicken auf Hochladen zeigt er mir im Browser das gewandelte Bild an. So weit so gut. Wenn ich das nun mit rechts Klick abspeichern will bekomme ich immer eine cover.php.
Mein IrfanView kann damit nichts anfangen. Was kann ich damit machen um ein JPG oder ähnliches zu bekommen, dass ich dann auf die Labels drucken kann?

Einfach die Datei Endung umbenennen in
.jpg

1 „Gefällt mir“

Also ich nutze Ihn nicht mehr… ich nutze für die Karten einfach die Cover von MCs das klappt ganz gut…

Das liegt am Browser! War bei mir auch so mit Firefox.
Nur mit dem Internet Explorer kann ich die Cover problemlos speichern.

Vielen Dank!
Stimmt mit dem Internet Explorer geht´s. Der speichert das dann als *.png. Hatte es mit Crome und Firefox ausprobiert aber nicht mit dem Explorer :grinning:

Den sollte man als normaler Mensch auch nicht nutzen :wink:

1 „Gefällt mir“

Mit Safari hat es auch ohne Probleme funktioniert - ich schaue mir den Code mal an… vielleicht finde ich ja heraus warum Chrome nicht will

Ich wollte nur zurück melden, dass es auch auf dem Mac nicht mit Firefox ordentlich funktioniert. Aber mit Safari läuft es. Danke!

Das Tool funktioniert super!
[Chrome Version 75.0.3770.100 (Offizieller Build) (32-Bit)]

Vielen Dank dafür

Hallo zusammen,
Danke erst einmal für die Veröffentlichung des Scource Codes durch @Thorsten und die PowerShell Umsetzung von @Dave!

Obwohl ich bisher noch nicht mit ImageMagick gearbeitet habe, war es damit einfach, das in bash umzusetzen. Ich habe noch folgende Veränderung vorgenommen:

  1. Umstellen der Berechnung: Ich weiß nicht, wie und wann PHP rundet, aber ich habe vorausgesetzt, dass einfach die kleinere Dimension beibehalten wird und die andere entsprechend vergrößert wird. So werden keine „unnötigen“ Bildpunkte erzeugt und ich kann alle Rechnungen so umstellen, dass zuerst multipliziert und dann dividiert wird.
  2. Ich habe ein bischen im ImageMagick Handbuch gestöbert und glaube, dass ich die zweite temporäre Instanz (bzw. die zweite Temporärdatei) los geworden bin.
  3. Die Temporärdatei wird am Ende gelöscht.

Daher übergebe ich hiermit das Skriptchen zum Testen und Probieren - aber ohne Garantie!

#!/bin/bash
#
# Create image with aspect ratio according to preset size.
# Offline version of http://voss.earth/TonUINO-Covermaker/
# See description/discussion in
# http://discourse.voss.earth/t/nutzt-einer-den-tonuino-covermaker-bzw-hat-den-mal-jemand-probiert
#
# Command line Parameter:
# $1 - Source file
# $2 - Blur operator (optional), see
#    https://www.imagemagick.org/script/command-line-options.php#gaussian-blur


#
# Configuration
#

# Destination size (choose unit to get integer values, e.g. 0.1mm)
# These values match Herma No. 5028, giving a ratio of 1.649606299.
dstSizeX=838
dstSizeY=508

# Default blur operator (used when $2 is not specified)
blurDefault=0x4                         

# Temorary file for background
background=covermakerBackground.jpg


#
# No configuration below this line
#
##############################################################################


#
# Gather data
#

# Evaluate input file
file="$1"
if [ ! -f "$file" ]; then
    echo "File not found: $file"
    exit 1
fi

# Evaluate blur operator
blur=${2:-$blurDefault}


# Split input file name and build output file name
extension="${file##*.}"
filename="${file%.*}"
outputFile="${filename}_label.$extension"

# Get resolution from input file
inSizeX=$(identify -format "%[width]" "$file")
inSizeY=$(identify -format "%[height]" "$file")

# Make sure, we can make calculation with size
inSizeX=$((inSizeX))
inSizeY=$((inSizeY))

# Calculate resolution of output (including correct rounding)
if [ $((dstSizeX*inSizeY)) -gt $((inSizeX*dstSizeY)) ]; then
    # Theoretical formula for dstSizeX/dstSizeY > inSizeX/inSizeY:
    # yOut = yIn; xOut = xDest/yDest * yOut
    outSizeX=$(( (2*dstSizeX*inSizeY + dstSizeY) / (2*dstSizeY) ))
    outSizeY=$((inSizeY))
else
    # Theoretical formula for dstSizeX/dstSizeY <= inSizeX/inSizeY:
    # xOut = xIn; yOut = yDest/xDest * xOut
    outSizeX=$((inSizeX))
    outSizeY=$(( (2*dstSizeY*inSizeX + dstSizeX) / (2*dstSizeX) ))
fi

# Summary in one line (for processing multiple images)
echo -n "$file ${inSizeX}x${inSizeY} --$blur-> $outputFile ${outSizeX}x${outSizeY}"


#
# Do the work
#

# Build blurred background
convert -adaptive-resize "$((inSizeX/10))x$((inSizeY/10))!" \
        -gaussian-blur "$blur" \
        -adaptive-resize "$((outSizeX))x$((outSizeY))!" \
        -virtual-pixel mirror \
        "$file" "$background"

# Put the original image in the middle of the background and be done
convert "$background" "$file" \
        -gravity center -composite \
        -compose src-atop \
        -flatten \
        "$outputFile"


#
# Clean up
#

# Delete temporary file
rm "$background"

echo "."

Viel Erfolg damit!
Über Rückmeldung würde ich mich freuen - falls etwas nicht funktioniert, bräuchte ich zumindest die Breite und Höhe der Eingangs- und Ausgangsdatei.

2 „Gefällt mir“

Wozu genau wird die Berechnung eigentlich benötigt? Imagemagick versucht doch bei resize automatisch das originale Seitenverhältnis beizubehalten und verändert das Bild so, dass es in die angegebene Box passt.

http://www.imagemagick.org/Usage/resize/#resize

The argument to the resize operator is the area into which the image should be fitted. This area is not the final size of the image but the maximum size of the area into which the image is to be fitted. That is because IM tries to preserve the aspect ratio of the image more than the final (unless a ‚!‘ flag is given), but at least one (if not both) of the final dimensions should match the argument given image.

Hallo nanos,
Danke für die Nachfrage: Ich habe früher mit dem encoden von Videos ein bischen Erfahrung gesammelt. Daher kommt eine implizite Voraussetzung, die ich gar nicht erwähnt hatte:
Meistens kostet Skalieren Information und damit Qualität - mal mehr mal weniger. Ich versuche daher grundsätzlich, unnötiges Skalieren zu vermeiden.
In meinem Skript wird daher das Original Cover in unveränderter Größe in den Hintergrund hineinenkopiert. Dafür wird der Hintergrund in der richtigen Größe „gebaut“. Und dafür muss ich die nicht-konstante Größe berechnen.
Mir ist klar, dass ich auch so Qualität verliere, weil ich das jpg decodiere und neu codieren muss. Und die harte Kante wird nur in den wenigsten Fällen günstig für den Encoder liegen, aber da habe ich mit den Standard-Einstellungen von ImageMagick keine Probleme gesehen (kann ja alles mit entsprechender Dateigröße erkauft werden).
Als Alternative mit Skalieren sehe ich eigentlich nur, die Auflösung so weit hoch zu drehen, dass ich auch wieder keinen nennenswerten Informationsverlust habe. Dabei wird aber auch die Datei wieder unnötig groß. Ich habe daher lieber ein paar Zeilen mehr im Skript.
Aber falls jemand eine bessere Lösung, freue ich mich immer, dazu zu lernen!

1 „Gefällt mir“

Servus,
kann man das Tool auch lokal nutzen?
Wenn ja wie setze ich das um?
Danke.

Theoretisch ist das möglich, praktisch aber mit einigem Aufwand verbunden: Apache, php und ImageMagick php extension installieren und konfigurieren, den php Code weiter oben kopieren, die Webseite kopieren oder eine eigene bauen und auf deinem Server an den richtigen Stellen hinterlegen. So könntest du das Tool theoretisch auch „lokal“ bzw. auf deinem eigenen Server nutzen. Aber was hast du denn genau vor?

Alternativ hat @LeffSpike ein paar Posts weiter oben eine sehr elegante Lösung präsentiert die sich lokal in der bash ausführen lässt und noch weiter oben hatte ich ein paar Zeilen Powershell gepostet mit der das erstellen der Cover prinzipiell unter Windows funktioniert.