summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Fetka <[email protected]>2012-02-14 14:13:53 (GMT)
committer Mario Fetka <[email protected]>2012-02-14 14:13:53 (GMT)
commit3df8e2c1065f5ef7d2ab6239969939f378e5a6e5 (patch)
tree93bfba11631792bba570399d84ed8e7d941442da
parent9e1288193294ed09e964ec4ef07ca2c38d855c45 (diff)
create image with support for white interior
-rw-r--r--lib/builder-utils.sh37
1 files changed, 29 insertions, 8 deletions
diff --git a/lib/builder-utils.sh b/lib/builder-utils.sh
index 597775c..ff5ba5b 100644
--- a/lib/builder-utils.sh
+++ b/lib/builder-utils.sh
@@ -134,35 +134,56 @@ convert_image() {
local wight=`${CMD_identify} -format "%w" $src`
${CMD_identify} -format "%wx%h" $src
+ # create a diffence image from the source
+ convert $src \( +clone -fx 'p{0,0}' \) -compose Difference -composite \
+ -modulate 100,0 +matte $OUTPUT_DIR/difference.png
+
+ # remove the black, replace with transparency
+ convert $OUTPUT_DIR/difference.png -bordercolor white -border 1x1 -matte \
+ -fill none -fuzz 7% -draw 'matte 1,1 floodfill' -shave 1x1 \
+ $OUTPUT_DIR/removed_black.png
+
+ # create the matte
+ convert $OUTPUT_DIR/removed_black.png -channel matte -separate +matte \
+ $OUTPUT_DIR/matte.png
+
+ # negate the colors
+ convert $OUTPUT_DIR/matte.png -negate -blur 0x1 \
+ $OUTPUT_DIR/matte-negated.png
+
+ # you are going for: white interior, black exterior
+ composite -compose CopyOpacity $OUTPUT_DIR/matte-negated.png $src \
+ $OUTPUT_DIR/final.png
+
if [ $wight -lt $hight ] ; then
# Its higher so force x160 and let imagemagic decide the right wight
# then add transparency to the rest of the image to fit 160x160
log_debug "Icon Wight: $wight < Hight: $hight"
- convert $src -colorspace RGB -transparent white -background transparent \
- -resize x160 -size 160x160 xc:transparent +swap -gravity center \
+ convert $OUTPUT_DIR/final.png -colorspace RGB -resize x160 \
+ -size 160x160 xc:transparent +swap -gravity center \
-composite -modulate 110 -colors 256 png8:$dst
builder_check_error "converting image"
elif [ $wight -gt $hight ] ; then
# Its wider so force 160x and let imagemagic decide the right hight
# then add transparency to the rest of the image to fit 160x160
log_debug "Icon Wight: $wight > Hight: $hight"
- convert $src -colorspace RGB -transparent white -background transparent \
- -resize 160x -size 160x160 xc:transparent +swap -gravity center \
+ convert $OUTPUT_DIR/final.png -colorspace RGB -resize 160x \
+ -size 160x160 xc:transparent +swap -gravity center \
-composite -modulate 110 -colors 256 png8:$dst
builder_check_error "converting image"
elif [ $wight -eq $hight ] ; then
# Its scare so force 160x160
log_debug "Icon Wight: $wight = Hight: $hight"
- convert $src -colorspace RGB -transparent white -background transparent \
- -resize 160x160 -size 160x160 xc:transparent +swap -gravity center \
+ convert $OUTPUT_DIR/final.png -colorspace RGB -resize 160x160 \
+ -size 160x160 xc:transparent +swap -gravity center \
-composite -modulate 110 -colors 256 png8:$dst
builder_check_error "converting image"
else
# Imagemagic is unable to detect the aspect ratio so just force 160x160
# this could result in streched images
log_debug "Icon Wight: $wight unknown Hight: $hight"
- convert $src -colorspace RGB -transparent white -background transparent \
- -resize 160x160 xc:transparent +swap -gravity center -composite \
+ convert $OUTPUT_DIR/final.png -colorspace RGB -resize 160x160 \
+ xc:transparent +swap -gravity center -composite \
-modulate 110 -colors 256 png8:$dst
builder_check_error "converting image"
fi

Powered by Domaintechnik.at | Hosting - Domain - Webspace