1

保存ボタンを押すと、画像ではなくテキストのみをJPEG形式で保存できます。

HTML:

  <div id="painter" runat="server" style="left: 280px; position: absolute; top: 82px;
    width: 311px; height: 388px; background-color: #ccccff;">
    hi niladri
    <br />
    helo
    <br />
    dvshfgjfhglkglkhjlhkjmlkhklfhfg sasasasa
    <br />
    sssdsdsds


    <img src="image/1.jpg" alt="Osr" height="100" width="309" />
            </div>

<asp:Button ID="Save" runat="server" Style="left: 733px; position: absolute; top: 266px"
    Text="Button" OnClick="Save_Click" />

C#コード:

  public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Save_Click(object sender, EventArgs e)
{
          string[] value = painter.Style.Value.Split(';');
    string hw = painter.InnerHtml;
    hw = hw.Replace("<br />", Environment.NewLine);

    string width = value[3];
    string height = value[4];
    string bgcolor = value[5];

    string[] widthArray = width.Split(':');
    string[] heightArray = height.Split(':');
    string[] bgcolorArray = bgcolor.Split(':');

    int w = int.Parse(widthArray[1].Replace("px", ""));
    int h = int.Parse(heightArray[1].Replace("px", ""));

    string color = bgcolorArray[1];

    //var overlay = new Bitmap(imagePath2);

    System.Drawing.Color c = System.Drawing.Color.Cyan;//.FromName("#ccccff");

    System.Drawing.Bitmap bt = new System.Drawing.Bitmap(w, h);
    System.Drawing.Graphics oGraphics = System.Drawing.Graphics.FromImage(bt);
    System.Drawing.Brush brush = new System.Drawing.SolidBrush(c);
    oGraphics.FillRectangle(brush, 0, 0, w, h);
    oGraphics.DrawString(hw, new Font("Arial", 12, FontStyle.Italic), SystemBrushes.WindowText, new PointF(50, 50));

    bt.Save("E:\\image10.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);  

 }
 }

画像:

ここに添付されているJpeg画像では、jpeg形式で保存すると、元の画像ではなくhtml画像のソース情報のみが取得されます。

4

3 に答える 3

2

こんにちは_

これらのコードを使用してください:

protected void Save_Click(object sender, EventArgs e)
{
        string[] value = painter.Style.Value.Split(';');
        string hw = painter.InnerHtml;
        hw = hw.Replace("<br />", Environment.NewLine);

        string width = value[3];
        string height = value[4];
        string bgcolor = value[5];

        string[] widthArray = width.Split(':');
        string[] heightArray = height.Split(':');
        string[] bgcolorArray = bgcolor.Split(':');

        int w = int.Parse(widthArray[1].Replace("px", ""));
        int h = int.Parse(heightArray[1].Replace("px", ""));
        //=====================================================================
        //Added By RAM:
        string key = "src=";
        int start_of_img_address = hw.IndexOf(key) + key.Length+1;
        int end_of_img_address = hw.Substring(start_of_img_address + 1).IndexOf('"');
        string image_addres = hw.Substring(start_of_img_address, end_of_img_address+1);
        image_addres = Server.MapPath(image_addres);
        Image my_img = Image.FromFile(image_addres);

        key = "<img";
        int start_of_img_tag = hw.IndexOf(key);
        int end_of_img_tag = hw.Substring(start_of_img_tag).IndexOf('>')+1;
        string img_tag = hw.Substring(start_of_img_tag, end_of_img_tag+1);
        hw=hw.Remove(start_of_img_tag, end_of_img_tag);
        Response.Write(img_tag);

        //=====================================================================
        string color = bgcolorArray[1];

        //var overlay = new Bitmap(imagePath2);

        System.Drawing.Color c = System.Drawing.Color.Cyan; //.FromName("#ccccff");

        System.Drawing.Bitmap bt = new System.Drawing.Bitmap(w, h);
        System.Drawing.Graphics oGraphics = System.Drawing.Graphics.FromImage(bt);
        System.Drawing.Brush brush = new System.Drawing.SolidBrush(c);
        oGraphics.FillRectangle(brush, 0, 0, w, h);
        oGraphics.DrawString(hw, new Font("Arial", 12, FontStyle.Italic), SystemBrushes.WindowText, new PointF(0, 0)); //changed 50 to 0

        //=====================================================================
        //Added By RAM:
        oGraphics.DrawImage(my_img, 0, 170, my_img.Width, my_img.Height);
        //=====================================================================

        bt.Save("E:\\image10.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}

...そして結果:

ここに画像の説明を入力

編集:

また、 Substring、IndexOfなどの代わりに正規表現を使用することもできます。

正規表現 (RegEx) は、以下を取得するのに役立ちます。

  • タグ
  • スタイル
  • そして、あなたがあなたのコンテンツから望むすべてのもの

だから、正規表現のチュートリアルを読んでください

独自の計算で最終的なイメージのコンテンツを配置する必要があります。幸運を...

于 2012-07-30T13:28:49.423 に答える
0

div (テキストのみを取得する) の InnerHTML のみを取得しているため、IMG タグは無視されます。Web ソースで画像のパスを指定する場合は、サーバー コントロール (画像) を使用して、そこから画像のパスを取得できます。コード ビハインドで画像を読み込み、それを Bitmap オブジェクトに描画してから、テキストをオーバーレイして保存します。

int w = 640;
int h = 480;

System.Drawing.Color c = System.Drawing.Color.White;

string imagePath = Server.MapPath("~/image/1.jpg"); // here you would get the image source of your Image control
Image img = Image.FromFile(imagePath);

System.Drawing.Bitmap bt = new System.Drawing.Bitmap(w, h);
System.Drawing.Graphics oGraphics = System.Drawing.Graphics.FromImage(bt);
System.Drawing.Brush brush = new System.Drawing.SolidBrush(c);
oGraphics.FillRectangle(brush, 0, 0, w, h);
oGraphics.DrawImage(img, 0, 0, img.Width, img.Height);
oGraphics.DrawString("this is some text", new Font("Arial", 12, FontStyle.Italic), SystemBrushes.WindowText, new PointF(50, 50));

bt.Save("c:\\image10.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
于 2012-07-30T12:44:56.037 に答える
0

DrawString を呼び出す前に、Graphics.DrawImage を使用します。

Graphics.DrawImage(Image.FromFile(Server.MapPath("~/image/1.jpg")), 0, 0, w, h);

Graphics.DrawImage: http://msdn.microsoft.com/en-us/library/dbsak4dc.aspx

于 2012-07-30T12:45:22.270 に答える