2015-11-18 5 views
2

Я использую Croppic для обрезки, поворота и сохранения изображения. Но я не уверен, как сохранить изображение, если оно повернуто. Когда я сохраняю изображение, после поворота на 90 градусов, он по-прежнему сохраняется в исходной ориентации. Я подозреваю, что так я сохраняю изображение, но не уверен.Сохранение изображения, которое было повернуто

Вот мои методы сохранения обрезанного/повернутого изображения. Я предполагаю, что это то, как я сохраняю изображение, потому что в моей папке с файлами видно, что обрезанное изображение не вращается правильно, но обрезка была применена.

[HttpPost] 
public string CroppedImage(string imgUrl, int imgInitW, int imgInitH, double imgW, double imgH, int imgY1, int imgX1, int cropH, int cropW) 
{ 
    var originalFilePath = Server.MapPath(imgUrl); 
    var fileName = CropImage(originalFilePath, imgInitW, imgInitH, (int)imgW, (int)imgH, imgY1, imgX1, cropH, cropW); 
    var result = new 
    { 
     status = "success", 
     url = "../Cropped/" + fileName 
    }; 

    return JsonConvert.SerializeObject(result); 
} 

private string CropImage(string originalFilePath, int origW, int origH, int targetW, int targetH, int cropStartY, int cropStartX, int cropW, int cropH) 
{ 
    var originalImage = Image.FromFile(originalFilePath); 

    var resizedOriginalImage = new Bitmap(originalImage, targetW, targetH); 
    var targetImage = new Bitmap(cropW, cropH); 

    using (var g = Graphics.FromImage(targetImage)) 
    { 
     g.DrawImage(resizedOriginalImage, new Rectangle(0, 0, cropW, cropH), new Rectangle(cropStartX, cropStartY, cropW, cropH), GraphicsUnit.Pixel); 
    } 
    string fileName = Path.GetFileName(originalFilePath); 
    var folder = Server.MapPath("~/Cropped"); 
    string croppedPath = Path.Combine(folder, fileName); 
    targetImage.Save(croppedPath); 

    return fileName; 

} 

Контроллер входы определены здесь, и я вижу, что imgX1 и imgY1 имеют разные значения, если я поворачиваю. Я просто не знаю, как правильно его сохранить на C#.

enter image description here

+0

Вы сказали, что сохранены в оригинальной ориентации. А как насчет урожая? Используется ли культура? – Ionut

+0

Да применяется растение. Но вращение - нет. Я пытаюсь определить, способ ли я его сохранить или если это что-то с Кроппиком? – user1186050

+0

Я вижу g.RotateTransform (90); но как узнать, было ли изображение повернуто? Единственная разница в данных, поступающих в контроллер, это данные imgX1/imgY1, и если я поворачиваю 90 град, я получаю значение 140/101, если я не вращаюсь, я получаю значения 15/70. – user1186050

ответ

1

Там есть параметр вращения размещен на сервере, когда вы обрезать изображение, отсутствующий от Croppic Docs. Это скажет вам, сколько градусов изображение было повернуто.

[HttpPost] 
public string CroppedImage(string imgUrl, int imgInitW, int imgInitH, 
    double imgW, double imgH, int imgY1, int imgX1, 
    int cropH, int cropW, int rotation) 
{ 

} 

И, вы можете использовать код в этой answer, чтобы повернуть изображение.

+0

отлично, это потрясающе, но попытка g.RotateTransform (вращение); по-прежнему не поворачивает изображение при его сохранении. – user1186050

+0

Я не знаю, о чем 'g.RotateTransform()' вы имеете в виду. Вы использовали код в ссылке в своем ответе? – ataravati

0
private void listImage_MouseDoubleClick(object sender, MouseEventArgs e) 
     { 
      try 
      { 
       pictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone); 
       pictureBox1.Refresh(); 
       btnGuardarFoto.Visible = true;     
      } 
      catch (Exception ex) 
      { 
       oCOM.MsgError("Error en listImage_MouseDoubleClick() " + ex.Message); 
      } 
     } 
+0

Он использует MVC не формы, и его вопрос касается того, как сохранить изображение после его перевертывания, а не как отобразить перевернутое изображение. –

 Смежные вопросы

  • Нет связанных вопросов^_^