我認爲你必須首先從gif中提取每一幀,調整每一幀的大小,然後重新放在一起。
編輯:像這樣?沒有測試也沒有建...
int maxFrames=32;
ImageMagickObject.MagickImage imgLarge = new ImageMagickObject.MagickImage();
// first extract all frames from gif to single png files
for(int frame=0; frame<maxFrames;frame++)
{
object[] o = new object[] { String.Format(strOrig+"[{0}]", frame)
, String.Format("tmp{0}.png", frame) };
imgLarge.Convert(ref o);
}
// resize every single png files
// add resized filenames to stringbuilder
StringBuilder filenames = new StringBuilder();
for(int frame=0; frame<maxFrames;frame++)
{
object[] o = new object[] { String.Format("tmp{0}.png", frame)
, "-resize"
, size
, "-gravity"
, "center"
, "-colorspace"
, "RGB"
, "-extent"
, "1024x768"
, String.Format("tmp-resized{0}.png", frame) };
filenames.Append(String.Format("tmp-resized{0}.png", frame));
filenames.Append(Environment.NewLine);
imgLarge.Convert(ref o);
}
// write resized filenames to file
File.WriteAllText("tmp-resized-files.txt", filenames);
// create resize animated gif based on filenames in the tmp-resized-files.txt
object[] o = new object[] { "@tmp-resized-files.txt"
, strDestNw };
imgLarge.Convert(ref o);
我該怎麼辦?與收集每一個框架併合並它..你有任何代碼? – 2011-02-09 04:50:35