Tramite alcuni metodi della classe System.Drawing.Image è possibile estrapolare/salvare le immagini contenute in un TIFF, tale formato infatti, può essre costituito da più immagini divise su più pagine.
In Vb.Net:
1: Private Sub SaveTIFFMultipage(ByVal imageType As String, ByVal pathImageTIFF As String)
2: Dim file As FileInfo = New FileInfo(pathImageTIFF)
3: If (file.Exists) Then
4: Using img As System.Drawing.Image = System.Drawing.Image.FromFile(pathImageTIFF)
5: 'Recupero il numero di pagine che costituiscono il TIFF
6: Dim countPages As Integer = img.GetFrameCount( _
7: New System.Drawing.Imaging.FrameDimension(img.FrameDimensionsList(0)))
8: For i As Integer = 0 To countPages - 1
9: img.SelectActiveFrame(New System.Drawing.Imaging.FrameDimension( _
10: img.FrameDimensionsList(0)), i)
11: Dim imageThumb As System.Drawing.Image = img.GetThumbnailImage( _
12: 300, 300, Nothing, Nothing)
13: 'Salvo le immagini
14: imageThumb.Save(String.Format("c:\{0}.{1}", _
15: file.Name.Replace(file.Extension, String.Empty) + i.ToString(), imageType))
16: Next
17: End Using
18: End If
19: End Sub
private void SaveTIFFMultipage(string imageType, string pathImageTIFF)
{
FileInfo file = new FileInfo( pathImageTIFF);
if( file.Exists)
{
using( System.Drawing.Image img = System.Drawing.Image.FromFile(pathImageTIFF))
{
//Recupero il numero di pagine che costituiscono il TIFF
int countPages = img.GetFrameCount(
new System.Drawing.Imaging.FrameDimension( img.FrameDimensionsList[0]));
for( int i=0; i<countPages; i++)
{
img.SelectActiveFrame(new System.Drawing.Imaging.FrameDimension(
img.FrameDimensionsList[0]), i);
System.Drawing.Image imageThumb = img.GetThumbnailImage( 300, 300, null, IntPtr.Zero);
imageThumb.Save(string.Format(@"c:\prova\{0}.{1}", file.Name.Replace(file.Extension, string.Empty) +
i.ToString(), imageType));
}
}
}
}
I due metodi fondamentali usati allo scopo di "estrapolare" le varie immagini contenute nel TIFF sono senza ombra di dubbio GetFrameCount e SelectActiveFrame.
Tramite il primo metodo GetFrameCount sappiamo il numeto totale di frame presenti nell'immagine, mentre il metodo SelectActiveFrame seleziona e rende attivo un determinato frame all’interno dell’immagine.
Nel caso specifico utilizzo anche GetThumbnailImage per ottenere la miniatura(300X 300) dell'immagine da salvare su disco per poi visualizzarle tramite il controllo Repeater:
<asp:Repeater ID="repImage" runat="server">
<ItemTemplate>
<asp:Image ID="img" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem, "src")%>'/>
</ItemTemplate>
</asp:Repeater>
0 commenti:
Post a Comment