我有一个两页的 tiff 图像。当我将文件转换为 jpg 格式时,我丢失了第二页。有没有办法将 tiff 文件中的两个图像放入一个 jpg 文件中。由于 tiff 文件太大,我不得不减小它们的大小。有没有办法以编程方式减小 tiff 文件的大小?这也可以解决我的问题。
问问题
43635 次
4 回答
33
由于 TIFF 可以包含多个帧,但 JPG 不能,因此您需要将每个单独的帧转换为 JPG。
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;
}
}
于 2012-07-26T12:23:36.773 回答
8
using System.Drawing;
using System.Drawing.Imaging;
Bitmap bm=Bitmap.FromFile("photo.tif");
bm.Save("photo.jpg",ImageFormat.Jpeg);
于 2013-11-19T12:15:05.243 回答
2
public static class ConvertTiffToJpeg
{
static string base64String = null;
public static string ImageToBase64(string tifpath)
{
string path = tifpath;
using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
{
using (MemoryStream m = new MemoryStream())
{
image.Save(m, ImageFormat.Jpeg);
byte[] imageBytes = m.ToArray();
base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
}
}
< img src="data:image/jpeg;base64, @ConvertTiffToJpeg.ImageToBase64(@"c:\sample.tif")"/>
于 2019-12-27T00:35:50.663 回答
1
我们在将 TIF 文件转换为 JPEG 时遇到了一些问题,因为 TIF 格式支持免费工具包中不支持的某些类型的压缩。我在互联网上搜索并尝试了一些商业工具包,但大多数都很难实现,有很多限制。引起我注意的工具包是leadtools,因为它支持加载和保存多种文件格式(包括不同压缩的TIF图像)。我们使用这个工具包将我们的图像转换为 JPEG 格式。您可以在以下页面中找到更多信息:http: //support.leadtools.com/CS/forums/8925/ShowPost.aspx
请注意,您可以使用此免费代码转换器将任何 VB.Net 代码转换为 C#:http: //www.developerfusion.com/tools/convert/vb-to-csharp/
于 2013-03-05T11:39:00.960 回答