كيفية فتح الإطار متعددة TIFF imageformat صورة في .NET 2.0?

StackOverflow https://stackoverflow.com/questions/401561

  •  03-07-2019
  •  | 
  •  

سؤال

Image.FromFile(@"path\filename.tif")

أو

Image.FromStream(memoryStream)

كل إنتاج الكائنات صورة واحدة فقط الإطار على الرغم من المصدر هو متعدد إطار ملف TIFF. كيف يمكنك تحميل ملف الصورة التي تحتفظ هذه الإطارات ؟ إن المشاجرات يتم حفظها باستخدام الصورة.SaveAdd أساليب الإطار من جانب الإطار.كانوا يعملون في مشاهد أخرى ولكن .صافي صورة الأساليب سوف يتم تحميل هذه الإطارات الأولى فقط.

هل هذا يعني أنه لا توجد وسيلة للعودة متعددة الإطار TIFF من طريقة حيث أنا ويمر في مجموعة من الصور النقطية إلى أن تستخدم الإطارات ؟

هل كانت مفيدة؟

المحلول

هنا هو ما يمكنني استخدام:

private List<Image> GetAllPages(string file)
{
    List<Image> images = new List<Image>();
    Bitmap bitmap = (Bitmap)Image.FromFile(file);
    int count = bitmap.GetFrameCount(FrameDimension.Page);
    for (int idx = 0; idx < count; idx++)
    {
        // save each frame to a bytestream
        bitmap.SelectActiveFrame(FrameDimension.Page, idx);
        MemoryStream byteStream = new MemoryStream();
        bitmap.Save(byteStream, ImageFormat.Tiff);

        // and then create a new Image from it
        images.Add(Image.FromStream(byteStream));
    }
    return images;
}

نصائح أخرى

كنت قادرة على التعامل مع متعددة إطار tiff باستخدام الأسلوب التالي.

Image multiImage = Image.FromFile(sourceFile);

multiImage.Save(destinationFile, tiff, prams);

int pageCount = multiImage.GetFrameCount(FrameDimension.Page);

for (int page = 1; page < pageCount; page++ )
{
    multiImage.SelectActiveFrame(FrameDimension.Page,page);
    multiImage.SaveAdd(dupImage,prams);
}

multiImage.SaveAdd(newPage, prams);
multiImage.Dispose(); 

لم أحاول حل في .net 2.0 ولكن MSDN يظهر أعضاء الفئة موجودة.لم اصلاح المشكلة .صافي 4.5.2.

نقطية.Dispose () ؛

بعد حلقة تحتاج إلى التخلص نقطية.وإلا كنت تحصل على خطأ "الملف باستخدام عملية أخرى" عند محاولة استخدام نفس الملف في عملية أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top