Quellcode durchsuchen

* Fix scaling with alpha channel. Patch from Bernd Kreuss, Mantis #22245
* Demo that demonstrates image scaling/interpolation

git-svn-id: trunk@21639 -

marco vor 13 Jahren
Ursprung
Commit
ee47ad22ff

+ 1 - 0
.gitattributes

@@ -2182,6 +2182,7 @@ packages/fcl-image/examples/Makefile svneol=native#text/plain
 packages/fcl-image/examples/Makefile.fpc svneol=native#text/plain
 packages/fcl-image/examples/drawing.pp svneol=native#text/plain
 packages/fcl-image/examples/imgconv.pp svneol=native#text/plain
+packages/fcl-image/examples/interpoldemo.pp svneol=native#text/plain
 packages/fcl-image/examples/xwdtobmp.pas svneol=native#text/plain
 packages/fcl-image/fpmake.pp svneol=native#text/plain
 packages/fcl-image/src/bmpcomn.pp svneol=native#text/plain

+ 106 - 75
packages/fcl-image/examples/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/04/25]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/06/18]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku aix
 LIMIT83fs = go32v2 os2 emx watcom
@@ -258,11 +258,13 @@ ifndef BINUTILSPREFIX
 ifndef CROSSBINDIR
 ifdef CROSSCOMPILE
 ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
 BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
 endif
 endif
 endif
 endif
+endif
 UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
 ifeq ($(UNITSDIR),)
 UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
@@ -293,208 +295,214 @@ FPCFPMAKE=$(FPC)
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-nativent)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),i386-iphonesim)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-wii)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc-aix)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-netbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-solaris)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-openbsd)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),powerpc64-aix)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),mips-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 ifeq ($(FULL_TARGET),mipsel-linux)
-override TARGET_PROGRAMS+=imgconv drawing xwdtobmp
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_PROGRAMS+=imgconv drawing xwdtobmp interpoldemo
 endif
 override INSTALL_FPCPACKAGE=y
 ifdef REQUIRE_UNITSDIR
@@ -854,6 +862,18 @@ BATCHEXT=.sh
 EXEEXT=
 SHORTSUFFIX=aix
 endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
 ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
 FPCMADE=fpcmade.$(SHORTSUFFIX)
 ZIPSUFFIX=$(SHORTSUFFIX)
@@ -1640,6 +1660,22 @@ REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_FPMKUNIT=1
 REQUIRE_PACKAGES_FCL-IMAGE=1
 endif
+ifeq ($(FULL_TARGET),jvm-java)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-IMAGE=1
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_FCL-IMAGE=1
+endif
 ifdef REQUIRE_PACKAGES_RTL
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 ifneq ($(PACKAGEDIR_RTL),)
@@ -1980,17 +2016,12 @@ endif
 endif
 ifdef CREATESHARED
 override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
 endif
-endif
-ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
 ifneq ($(findstring $(OS_TARGET),freebsd openbsd netbsd linux solaris),)
 ifeq ($(CPU_TARGET),x86_64)
 override FPCOPT+=-Cg
 endif
 endif
-endif
 ifdef LINKSHARED
 endif
 ifdef OPT

+ 1 - 1
packages/fcl-image/examples/Makefile.fpc

@@ -3,7 +3,7 @@
 #
 
 [target]
-programs=imgconv drawing xwdtobmp
+programs=imgconv drawing xwdtobmp interpoldemo
 
 [require]
 packages=fcl-image

+ 39 - 0
packages/fcl-image/examples/interpoldemo.pp

@@ -0,0 +1,39 @@
+program interpoldemo;
+// Interpolation demo for fcl-image by Bernd Kreuss. Mantis #22245
+// Loads original.png (not included) and scales it back to 64x64
+
+{$mode objfpc}{$H+}
+
+uses
+  Classes,
+  sysutils,
+  FPimage,
+  FPImgCanv,
+  FPReadPNG,
+  FPWritePNG;
+
+var
+  ImOriginal: TFPMemoryImage;
+  ImScaled: TFPMemoryImage;
+  CanvScaled: TFPImageCanvas;
+  Reader: TFPReaderPNG;
+  Writer: TFPWriterPNG;
+
+begin
+  ImOriginal := TFPMemoryImage.Create(0, 0);
+  ImScaled := TFPMemoryImage.Create(64, 64);
+  Reader := TFPReaderPNG.create;
+  Writer := TFPWriterPNG.create;
+  Writer.UseAlpha := True;
+  ImOriginal.LoadFromFile('original.png', Reader);
+
+  CanvScaled := TFPImageCanvas.create(ImScaled);
+  CanvScaled.StretchDraw(0,0,63,63, ImOriginal);
+
+  ImScaled.SaveToFile('scaled.png', Writer);
+  Reader.Free;
+  Writer.Free;
+  ImOriginal.Free;
+  ImScaled.Free;
+end.
+

+ 2 - 2
packages/fcl-image/src/fpinterpolation.inc

@@ -179,7 +179,7 @@ begin
         begin
           sx:=PInteger(xEntry)^;
           inc(xEntry,SizeOf(integer));
-          NewCol:=colBlack;
+          NewCol:= colTransparent;
           for cx:=0 to xSupport-1 do
           begin
             f:=PSingle(xEntry)^;
@@ -198,7 +198,7 @@ begin
       for dx:=0 to w-1 do
       begin
         CurEntry:=yEntry+SizeOf(integer);
-        NewCol:=colBlack;
+        NewCol:=colTransparent;
         for sy:=0 to ySupport-1 do
         begin
           f:=PSingle(CurEntry)^;