0

画像に追加の高さを追加して、サブタイトルを付けたいです。元の画像を「圧縮」したり、サイズを変更したりしたくありません。サイズを維持し、下部の高さに +40 px を追加して、この例のようなテキストを追加したい

赤い部分が元画像です。青い部分は私が追加したものです。

このコードを試してみましたが、テキストが画像の「外側」に表示されていると思います。

Image image = Image.FromFile("D:\\my_sample_image.jpg");
// Create graphics from image
Graphics graphics = Graphics.FromImage(image);
// Create font
Font font = new Font("Times New Roman", 42.0f);
// Create text position
PointF point = new PointF(150, image.Height+40);
// Draw text
graphics.DrawString("Watermark", font, Brushes.Red, point);
// Save image
image.Save("D:\\my_sample_output.jpg");
MessageBox.Show("FINISHED");
// Open generated image file in default image viewer installed in Windows
Process.Start("D:\\my_sample_output.jpg");
4

2 に答える 2

6

新しいビットマップを作成し、そこからグラフィックスを作成してから、下部にテキスト用のスペースがある古い画像を描画します。

Bitmap image = new Bitmap("path/resource");
Bitmap newImage = new Bitmap(image.Width, image.Height + 40);
using (Graphics g = Graphics.FromImage(newImage))
{
      // Draw base image
      Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); 
      g.DrawImageUnscaledAndClipped(image, rect);
      //Fill undrawn area
      g.FillRectangle(new SolidBrush(Color.Black), 0, image.Height, newImage.Width, 40);
      // Create font
      Font font = new Font("Times New Roman", 22.0f);
      // Create text position (play with positioning)
      PointF point = new PointF(0, image.Height);
      // Draw text
      g.DrawString("Watermark", font, Brushes.Red, point);
 }
于 2012-10-08T17:17:27.577 に答える
0
public Image addSubtitleToImage(string path, int height, string title)
{
    Bitmap image = new Bitmap(path);
    Bitmap newImage = new Bitmap(image.Width, image.Height + height);
    using (Graphics g = Graphics.FromImage(newImage))
    {
        g.FillRectangle(new SolidBrush(Color.Black), new Rectangle(0, 0,   newImage.Width, newImage.Height));
        g.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height));

        Font font = new Font("Tahoma", 30.0f);
        g.DrawString(title, font, Brushes.White, new PointF(image.Width/2 , image.Height+));

    }
    return newImage;
}
于 2015-09-23T08:11:01.027 に答える