2012-07-26 55 views
12

Tôi có hình ảnh tiff với hai trang. khi tôi chuyển đổi tập tin sang định dạng jpg Tôi bị mất trang thứ hai. Có cách nào để đặt hai hình ảnh trên tệp tiff vào một tệp jpg không. Do tệp tiff quá lớn nên tôi phải giảm kích thước của chúng. Có cách nào giảm kích thước tệp tiff theo chương trình không? Có thể giải quyết cho vấn đề của tôichuyển đổi định dạng tiff sang jpg

+0

ngôn ngữ gì bạn đang làm việc tại? :) –

+0

xin lỗi về ít thông tin hơn :) C# .net – ozman

+1

Nếu bạn đang sử dụng Linux, bạn có thể sử dụng [lệnh chuyển đổi] (http://www.imagemagick.org/script/convert.php) để nối thêm nhiều hình ảnh tiff. ví dụ. ** convert -append ** _img1.tiff img2.tiff img3.tiff_ ** result.jpg ** – chochim

Trả lời

27

Vì TIFF có thể chứa nhiều khung nhưng JPG không thể bạn cần chuyển đổi từng khung hình thành JPG.

Taken từ Windows Dev Center Samples:

public static string[] ConvertTiffToJpeg(string fileName) 
{ 
     using (Image imageFile = Image.FromFile(fileName)) 
     { 
      FrameDimension frameDimensions = new FrameDimension( 
       imageFile.FrameDimensionsList[0]); 

      // Gets the number of pages from the tiff image (if multipage) 
      int frameNum = imageFile.GetFrameCount(frameDimensions); 
      string[] jpegPaths = new string[frameNum]; 

      for (int frame = 0; frame < frameNum; frame++) 
      { 
       // Selects one frame at a time and save as jpeg. 
       imageFile.SelectActiveFrame(frameDimensions, frame); 
       using (Bitmap bmp = new Bitmap(imageFile)) 
       { 
        jpegPaths[frame] = String.Format("{0}\\{1}{2}.jpg", 
         Path.GetDirectoryName(fileName), 
         Path.GetFileNameWithoutExtension(fileName), 
         frame); 
        bmp.Save(jpegPaths[frame], ImageFormat.Jpeg); 
       } 
      } 

      return jpegPaths; 
     } 
} 
+0

Xin chào, các quá trình chạy tốt, nhưng những hình ảnh tạo ra một màu tối (đen foreground). tôi đang thiếu gì? –

0

Chúng tôi phải đối mặt với một số vấn đề khi chuyển đổi các file TIF tới JPEG, bởi vì định dạng TIF hỗ trợ một số loại nén không được hỗ trợ trong bộ công cụ miễn phí. Tôi đã tìm kiếm trên Internet và đã thử một số bộ công cụ thương mại, nhưng hầu hết chúng đều khó thực hiện với nhiều hạn chế. Bộ công cụ đã thu hút sự chú ý của tôi là leadtools, vì nó hỗ trợ tải và lưu nhiều định dạng tệp (bao gồm cả hình ảnh TIF với các lần nén khác nhau). Chúng tôi sử dụng bộ công cụ này chuyển đổi hình ảnh của chúng tôi sang định dạng JPEG. Bạn có thể tìm thêm thông tin trong trang sau đây: http://support.leadtools.com/CS/forums/8925/ShowPost.aspx

Lưu ý rằng bạn có thể chuyển đổi bất kỳ mã VB.Net C# bằng cách sử dụng chuyển đổi mã số miễn phí này: http://www.developerfusion.com/tools/convert/vb-to-csharp/

3
using System.Drawing; 
using System.Drawing.Imaging; 

Bitmap bm=Bitmap.FromFile("photo.tif"); 
bm.Save("photo.jpg",ImageFormat.Jpeg); 
+0

Câu trả lời hay, nhưng thường cung cấp giải thích về những gì mã đang làm được ưu tiên cùng với mã. – MattD