0

インターネットから入手した方法を使用しており、少しカスタマイズしました。

fileUpload から HttpPostedFile といくつかの不要なパラメーターを取得し、画像のサイズを変更してコンパイルし、ホスティングに保存して場所を返します

しかし、画像をアップロードした後、画像が少し灰色になっていることがわかりました。ここで 2 つの画像の違いを見ることができます。

リアル画像: ここに画像の説明を入力

アップロードされた画像 アップロードされた画像

私の方法でそれを修正する方法。

私のアップロード方法

public string ResizeImage(HttpPostedFile PostedFile, string destinationfile, int maxWidth, int maxHeight)
{

    float ratio;

    // Create variable to hold the image
    System.Drawing.Image thisImage = System.Drawing.Image.FromStream(PostedFile.InputStream);

    // Get height and width of current image
    int width = (int)thisImage.Width;
    int height = (int)thisImage.Height;

    // Ratio and conversion for new size
    if (width < maxWidth)
    {
        ratio = (float)width / (float)maxWidth;
        width = (int)(width / ratio);
        height = (int)(height / ratio);
    }

    // Ratio and conversion for new size
    if (height < maxHeight)
    {
        ratio = (float)height / (float)maxHeight;
        height = (int)(height / ratio);
        width = (int)(width / ratio);
    }

    // Create "blank" image for drawing new image
    System.Drawing.Bitmap outImage = new System.Drawing.Bitmap(width, height);
    System.Drawing.Graphics outGraphics = System.Drawing.Graphics.FromImage(outImage);
    System.Drawing.SolidBrush sb = new System.Drawing.SolidBrush(System.Drawing.Color.White);

    outGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
    outGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    outGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

    // Fill "blank" with new sized image
    outGraphics.FillRectangle(sb, 0, 0, outImage.Width, outImage.Height);
    outGraphics.DrawImage(thisImage, 0, 0, outImage.Width, outImage.Height);
    sb.Dispose();
    outGraphics.Dispose();
    thisImage.Dispose();

    if (!destinationfile.EndsWith("/"))
        destinationfile += "/";

    if (!System.IO.Directory.Exists(Server.MapPath(destinationfile)))
        System.IO.Directory.CreateDirectory(Server.MapPath(destinationfile));

    // Save new image as jpg
    string filename = Guid.NewGuid().ToString();
    outImage.Save(Server.MapPath(destinationfile + filename + ".jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
    outImage.Dispose();

    return destinationfile + filename + ".jpg";
}

編集

2つの写真の色の違いがわかるようにプリントスクリーンを撮りました

ここに画像の説明を入力

4

1 に答える 1