J'essaie de convertir plusieurs images en un fichier image multi-tiff. Quand je cours le code ci-dessous sur plus d'une image je reçois une "Une erreur générique s'est produite dans GDI +." Erreur. Si j'ai juste une image alors cela fonctionne bien et sort le fichier. Si je change le code en bitmap et la liste en bitmap alors le code fonctionne bien avec plusieurs images.MetaFile to Multi-Tiff Image
public List<Metafile> metaFileList = new List<Metafile>();
private void writeImagesToEnhancedMetaMulTiff()
{
ImageCodecInfo info = null;
foreach (ImageCodecInfo ice in ImageCodecInfo.GetImageEncoders())
if (ice.MimeType == "image/tiff")
info = ice;
System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.SaveFlag;
EncoderParameters ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
Metafile pages = null;
int frames = 0;
foreach (Metafile metaFileItem in metaFileList)
{
if (frames == 0)
{
pages = metaFileItem;
pages.Save(@"E:\output_MetaFile.tif", info, ep);
}
else
{
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
pages.SaveAdd(metaFileItem, ep);
}
if (frames >= metaFileList.Count() - 1)
{
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
}
frames++;
}
}
Pour accéder au presse-papiers obtenir le métafichier comme je l'ai utilisé ce code:
public System.Drawing.Imaging.Metafile GetEnhMetafileOnClipboard(IntPtr hWnd)
{
System.Drawing.Imaging.Metafile meta = null;
if(OpenClipboard(hWnd))
{
try
{
if (IsClipboardFormatAvailable(CF_ENHMETAFILE) != 0)
{
IntPtr hmeta = GetClipboardData(CF_ENHMETAFILE);
meta = new System.Drawing.Imaging.Metafile(hmeta, true);
metaFileList.Add(meta);
}
}
finally
{
CloseClipboard();
}
}
return meta;
}
Laissez-moi savoir si vous avez besoin de fournir plus de code.
Merci.