AppEngineの開発環境では問題ないのですが、本番環境で画像を縮小した場合に、縮小率によっては、画像の右端と下端に灰色の縦線が出ることがあります。

問題の出るコードは以下です。

img = images.Image(image)
img.resize(width=w,height=h)
img.execute_transforms()

推測するに、バイリニアで縮小をかける際に、+1で画面外の画素を参照してしまっており、画面外の画素が黒となり、白との合成で灰色の線が出るのだと思います。

この問題を回避するには、+1のサイズの画像に縮小した後、cropで右端と下端を使用しない形に切り取ります。これによって、縦線が出ても、それを除去することができます。

img = images.Image(image)
margin=1
img.resize(width=w+margin,height=h+margin)
img.crop(0.0,0.0,1.0*w/(w+margin),1.0*h/(h+margin))
img.execute_transforms()