日期:2014-05-19  浏览次数:20440 次

上传图片后出现的问题。图片变成缩略图后出现的问题。百思不得其解。
我做了个在首页FLASH显示,但上传的图片显示不了。不是路径出了问题。图片可以看到。那个FLASH也没问题。结果我拿了一张生成缩略图片用PHOTOSHOP打开。发现PHOTOSHOP居然打不开。错误提示是:“不能完成请求,因为找到不知名的或无效的JPEG标志符类型”。
我用的生成缩略图是在网上看到的代码。代码如下:

public     void   MakThumbnail(string   originalImagePath,string   thumbnailPath,int   width,int   height,string   mode)
{
System.Drawing.Image   originalImage;
originalImage=System.Drawing.Image.FromFile(originalImagePath);
int   towidth=width;
int   toheight=height;
int   x=0;
int   y=0;
int   ow=Convert.ToInt32(originalImage.Width);
int   oh=Convert.ToInt32(originalImage.Height);
switch(   mode   )  
{  
// "HW "   '指定高宽缩放(可能变形)
case   "HW "   :
break;
// "W "   '指定宽,高按比例
case   "W ":   toheight   =   Convert.ToInt32(originalImage.Height)   *   width   /   Convert.ToInt32(originalImage.Width);  
break;
//   "H "   '指定高,宽按比例
case   "H ":   towidth   =   Convert.ToInt32(originalImage.Width)   *   height   /   Convert.ToInt32(originalImage.Height);  
break;
// "Cut "   指定高宽裁减(不变形)

}  
//新建一个bmp图片
System.Drawing.Bitmap   bitmap=new   Bitmap(towidth,toheight);
//新建一个画板
System.Drawing.Graphics       g       =     System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage,new   Rectangle(0,0,towidth,toheight),new   Rectangle(x,y,ow,oh),GraphicsUnit.Pixel);
try
{
// '以jpg格式保存缩略图
bitmap.Save(thumbnailPath);
}
catch(Exception   ex)
{
throw   ex;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
生成缩略图的后缀名跟上传图片的后缀后都是一样的。请问这里出了些什么问题?
图片生成后没问题。直接经过路径可以访问到。那个FLASH读的图片也没问题。就是读不到上传后的图后。



------解决方案--------------------
http://www.cnblogs.com/doll-net/archive/2006/10/31/545384.html

希望能对你有点帮助
------解决方案--------------------
http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/colorquant.asp
------解决方案--------------------
用用我的函数,希望可以。我的可以打开:
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name= "originalImagePath "> 原始路径 </param>
/// <param name= "thumbnailPath "> 缩略图路径 </param>
/// <param name= "width "> 缩略图的宽度 </param>
/// <param name= "height "> 缩略图的高度 </param>
/// <param name= "mode "> 编辑和修改 </param>
/// <param name= "imgformat "> 缩略图格式 </param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode,string imgformat)
{

System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = widt