線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1280
推到 Plurk!
推到 Facebook!

請問將圖片切割N等分之較佳寫法

尚未結案
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-18 09:11:03 IP:211.74.xxx.xxx 未訂閱
請問將圖片大小依30*40 pixels 切割N等分 且每一等分之後還要讀出pixel作處理,但不需存檔 之較佳寫法
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-02 16:59:47 IP:210.65.xxx.xxx 未訂閱
Hi:    一點點小程式,供你參考,希望對你能有一點幫助
procedure TForm1.Button4Click(Sender: TObject);
VAR
    I,J : Integer;
    BMP1,BMP2,BMP3 : TBitMap;
    Width,Height : Integer;
begin
    Width := ImageList2.Width;
    Height := ImageList2.Height;
    Image1.Picture.LoadFromFile('Windows 2000.jpg');
    ImageList2.Clear;
    ImageList3.Clear;        BMP1 := TBitMap.Create;
    BMP1.Assign(Image1.Picture.Graphic);
    FOR J := 1 TO 10 DO
        BEGIN
            FOR I := 1 TO 10 DO
                BEGIN
                    BMP2 := TBitMap.Create;
                    BMP2.Width := Width;
                    BMP2.Height := Height;
                    BMP3 := TBitMap.Create;
                    BMP3.Width := ImageList3.Width;
                    BMP3.Height := ImageList3.Height;
                    BMP2.Canvas.BrushCopy(Rect(0,0,Width,Height),BMP1,Rect((I - 1) * Width,(J - 1) * Height,I * Width,J * Height),clWhite);
                    SetStretchBltMode(BMP3.Canvas.Handle, COLORONCOLOR);
                    StretchBlt(BMP3.Canvas.Handle, 0, 0, BMP3.Width, BMP3.Height, BMP2.Canvas.Handle, 0, 0,BMP2.Width, BMP2.Height, SrcCopy);
                    ImageList2.Add(BMP2,NIL);
                    ImageList3.Add(BMP3,NIL);
                    BMP2.Free;
                    BMP3.Free;
                END;
        END;
    BMP1.FREE;
end;    procedure TForm1.Button6Click(Sender: TObject);
var
    x,y : Integer;
    BitMap : TBitMap;
    P : PByteArray;
begin
    BitMap := TBitMap.Create;
    TRY
        BitMap.Assign(Image2.Picture.Bitmap);
        FOR y := 0 TO BitMap.Height -1 DO
            BEGIN
                P := BitMap.ScanLine[y];
                FOR x := 0 TO BitMap.Width -1 DO
                    BEGIN
                        Image3.Canvas.Pixels[y,x] := BitMap.Canvas.Pixels[x,y];
                    END;
            END;
    FINALLY
        BitMap.Free;
        Image3.Refresh;
    END;
end;
原始圖檔 : 800 * 600 ImageList2 : 80 * 60 ImageList3 : 40 * 30 Image2 : 80 * 60 Image3 : 60 * 80 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
系統時間:2024-04-25 19:00:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!