用這個code 想去縮小圖片
卻一直被轉向Q_Q
如何給新size 又維持直向圖片呢
public static Bitmap SizeImage(Image srcImage, int iWidth, int iHeight)
{
try
{
// 要儲存到的圖片
Bitmap b = new Bitmap(srcImage, iWidth, iHeight);
Graphics g = Graphics.FromImage(b);
// 插值演算法的質量
// g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(srcImage, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
g.Dispose();
return b;
}
catch (Exception)
{
return null;
}
}
我就懶,不愛用DrawImage
private Bitmap SizeImage(Image srcImage, int iWidth)
{
try
{
// 要儲存到的圖片
// 先求得原始圖片的寬高比
double Ratio = (double)(srcImage.Height / srcImage.Width);
// 不使用iHeight,用上行算的
Size newSize = new Size(iWidth, (int)(Ratio * iWidth));
// 不用DrawImage
var newBitmap = new Bitmap(srcImage, newSize);
return newBitmap;
}
catch (Exception)
{
return null;
}
}
用法
Bitmap bmp = SizeImage( new Bitmap(@"test.jpg"),300); // 只指定WIDTH
bmp.Save("resized.jpg");
參考微軟官方範例
閱讀時間:2分鐘
謝謝 後來發現是圖片手機有記憶位置點這樣就不會被翻轉
Image img = Image.FromFile(imgSourceFilePathTestInput);
int exifOrientationID = 0x112; //274
if (img.PropertyIdList.Contains(exifOrientationID))
{
var prop = img.GetPropertyItem(exifOrientationID);
int val = BitConverter.ToUInt16(prop.Value, 0);
var rot = RotateFlipType.RotateNoneFlipNone;
if (val == 3 || val == 4)
rot = RotateFlipType.Rotate180FlipNone;
else if (val == 5 || val == 6)
rot = RotateFlipType.Rotate90FlipNone;
else if (val == 7 || val == 8)
rot = RotateFlipType.Rotate270FlipNone;
if (val == 2 || val == 4 || val == 5 || val == 7)
rot |= RotateFlipType.RotateNoneFlipX;
if (rot != RotateFlipType.RotateNoneFlipNone)
img.RotateFlip(rot);