загруженные вопросы ориентации изображения - PullRequest
0 голосов
/ 28 января 2020

Я искал решение целый день, но, похоже, не смог найти правильного решения.

Проблема (я думаю) довольно проста. Когда изображение загружается на мою страницу, оно отображается в элементе img. Теперь по какой-то причине он поворачивается сам по себе от портрета к пейзажу. Я вырезал среднего человека и подключил тег img к пути. Проблема сохраняется.

Если я открою его в ps и сохраню как новый jpeg, он исправлен, но это нереально, поскольку изображения будут загружаться непосредственно с клиентов.

В другом случае программа (ps, paint, photos, photos3d) существует ли эта проблема

Во время копания я обнаружил, что это вероятно вызвано exif-данными изображения. Все остальное игнорирует эти данные или читает их правильно idk.

Может кто-нибудь подсказать, как это исправить?

Я попытался добавить ориентацию изображения: 0deg и ориентацию изображения: from-image безрезультатно.

Кроме того, ради моего здравомыслия, кто-нибудь знает, ПОЧЕМУ это может быть проблемой?

РЕДАКТИРОВАТЬ Это не происходит на firefox. При этом я не могу заставить всех избегать chrome

Заранее спасибо

1 Ответ

0 голосов
/ 31 января 2020

Хорошо, поэтому я посмотрел повсюду и нашел несколько способов повернуть изображение клиента и добавил css, чтобы он выглядел как git. Затем я понял, что все это было потрачено впустую, так как это привело бы к завышению изображения в браузерах, которые правильно отображали его. данные)

Я включу код контроллера

public JsonResult NormalizeOrientation(HttpPostedFileBase file)
    {
        Image img = Image.FromStream(file.InputStream);
        if (Array.IndexOf(img.PropertyIdList, 274) > -1)
        {
            var orientation = (int)img.GetPropertyItem(274).Value[0];
            switch (orientation)
            {
                case 1:
                    // No rotation required.
                    break;
                case 2:
                    img.RotateFlip(RotateFlipType.RotateNoneFlipX);
                    break;
                case 3:
                    img.RotateFlip(RotateFlipType.Rotate180FlipNone);
                    break;
                case 4:
                    img.RotateFlip(RotateFlipType.Rotate180FlipX);
                    break;
                case 5:
                    img.RotateFlip(RotateFlipType.Rotate90FlipX);
                    break;
                case 6:
                    img.RotateFlip(RotateFlipType.Rotate90FlipNone);
                    break;
                case 7:
                    img.RotateFlip(RotateFlipType.Rotate270FlipX);
                    break;
                case 8:
                    img.RotateFlip(RotateFlipType.Rotate270FlipNone);
                    break;
            }
            // This EXIF data is now invalid and should be removed.
            img.RemovePropertyItem(274);

        }
        MemoryStream ms = new MemoryStream();
        img.Save(ms, ImageFormat.Jpeg);
        return Json(new { base64imgage = Convert.ToBase64String(ms.ToArray()) }
      , JsonRequestBehavior.AllowGet);
    }
...