网上一般都是这种做法:
原图宽srcWidth
原图高srcHeight目标宽TargetWdith
目标高TargetHeightrsize=srcWidth/srcHeightif(srcWidth > TargetWdith){
   newWidth=TargetWdith;//就错在这里
   newHeight=newWidth/rsize;
}这样计算而来得到的新图片宽度没有超过目标宽度,图片也未失真,但是,新图片的高度不一定就比目标高度小。

解决方案 »

  1.   

    rsize=srcWidth/srcHeight
    if(srcWidth > TargetWdith){ 
      newWidth=TargetWdith;
      newHeight=newWidth/rsize; 

    else
    {
      newHeight=TargetHeight;
      newWidth=newHeight*rsize;
    }
      

  2.   

    等比例缩放:
    ∵ 原图宽/原图高 = 目标宽/目标高
    ∴ 给定目标宽时
    目标高 = 目标宽/(原图宽/原图高)当 原图宽 > 目标宽 时缩小
    当 原图宽 < 目标宽 时放大
      

  3.   

    多谢楼上二位:
    经过我昨晚几小时的研究,终于知道怎么算了,通过比较原图和目标图的比例大小就可以了:
    原图宽srcWidth 
    原图高srcHeight 目标宽TargetWdith 
    目标高TargetHeight rsize=srcWidth/srcHeight //原图比例
    rsize2=TargetWdith/TargetHeight  //目标图比例if(rsize>rsize2){ 
      newWidth=TargetWdith;
      newHeight=newWidth/rsize;