2017-07-31 4 views
0

Je suis en train de changer la résolution de mon fichier tiff, il a été changé avec succès en utilisant le code ci-dessous, mais il a augmenté ma taille du fichier de sortie de 74kb à 828KB après avoir dessinéRedimensionnement image de tiff augmenter la taille du fichier en utilisant C#

code utilisé:

public void Resize(string imageFile, string outputFile, int width,int height) 
    { 
     using (var srcImage = Image.FromFile(imageFile)) 
     { 
      var newWidth = (int)(width); 
      var newHeight = (int)(height); 

      using (var newImage = new Bitmap(newWidth, newHeight)) 
      { 
       using (var graphics = Graphics.FromImage(newImage)) 
       {   
        graphics.SmoothingMode = SmoothingMode.AntiAlias; 

        graphics.InterpolationMode = InterpolationMode.NearestNeighbor; 
        graphics.PixelOffsetMode = PixelOffsetMode.None; 

        graphics.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight)); 

        newImage.Save(outputFile,ImageFormat.Tiff); 
       } 
      } 
     } 
    } 

Répondre

0

le format de fichier Tiff est un format sans perte, afin de réduire la taille que vous devez utiliser la compression tels que LZW.

Vous devez donc inclure ces informations lorsque vous enregistrez le fichier.

ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/tiff"); 

System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Compression; 
EncoderParameters myEncoderParameters = new EncoderParameters(1); 

EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionLZW); 
myEncoderParameters.Param[0] = myEncoderParameter; 

Et la fonction d'aide pour obtenir l'encodeur

private static ImageCodecInfo GetEncoderInfo(String mimeType) 
{ 
    int j; 
    ImageCodecInfo[] encoders; 
    encoders = ImageCodecInfo.GetImageEncoders(); 
    for (j = 0; j < encoders.Length; ++j) 
    { 
     if (encoders[j].MimeType == mimeType) 
      return encoders[j]; 
    } 
    return null; 
} 

Code complet et plus de détails peuvent être trouvés ici: https://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.compression(v=vs.110).aspx

+0

Non tout en utilisant Graphics.FromImage (FileName) augmente la taille du fichier , après avoir utilisé les paramètres du codeur également. –

+0

Quelles sont vos anciennes et nouvelles tailles? L'entrée est-elle également au format TIFF, si oui quelle est la compression utilisée? –