原图片只有不到十K,保存后变成了十多K

解决方案 »

  1.   

    mysql 不知道会不会丢掉  SQLSERVER应该没问题
      

  2.   

    SQLserver是没有问题
    现在用在mysql下,不知哪位DX知道?
      

  3.   


    FUNCTION JPEGSentinelsAreOK(CONST Filename: TFilename): BOOLEAN;
    VAR
    FileStream: TFileStream;
    w1        : WORD;    // a "word" is always 2 bytes long
    w2        : WORD;
    BEGIN
        ASSERT(SizeOf(WORD) = 2);
        RESULT := FileExists(Filename);
        IF RESULT
        THEN
            BEGIN
            FileStream := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyNone);
            TRY
            FileStream.Seek(0, soFromBeginning); // use seek or position
            FileStream.Read(w1,2);        FileStream.Position := FileStream.Size - 2;
            FileStream.Read(w2,2)
            FINALLY
            FileStream.Free
            END;
            RESULT := (w1 = $D8FF) AND (w2 = $D9FF);
        END;
        END;
    //存图片
    procedure TForm2.Button3Click(Sender: TObject);
    VAR
    JPEGImage:TJPEGImage;
    fS : TMemoryStream;
    begin
        IF OpenpictureDialog1.Execute
        THEN
        BEGIN
        IF JPEGSentinelsAreOK(OpenpictureDialog1.Filename)
        THEN
            BEGIN
            JPEGImage := TJPEGImage.Create;
            TRY
            JPEGImage.LoadFromFile(OpenPictureDialog1.Filename);
            Image1.Picture.Graphic := JPEGImage;
            try
            fs:=TMemoryStream.Create;
            JPEGImage.SaveToStream(fs);
            Table1.Append;
            Table1.FieldByName('題目ID').AsInteger:=Table1.RecordCount+1;
            TBlobField(Table1.FieldByName('圖片')).LoadFromFile(OpenpictureDialog1.Filename);
            Table1.Post;
            finally
            fs.Free;
            end;
            FINALLY
            JPEGImage.Free
            END;
        END;    END;
    end;//读图片
    procedure TForm2.DBGrid1DblClick(Sender: TObject);
    var
    bS : TBlobStream;
    Pic : TJpegImage;
    begin
        if DBGrid1.SelectedField = TDBGrid(Sender).DataSource.DataSet.FieldByName('圖片') then
        bS := TBlobStream.Create(TBlobField(Table1.FieldByName('圖片')), bmWrite); // AdoTable1Picture為欄位名稱。
        try
            Pic:=TJpegImage.Create;
            try
            Pic.LoadFromStream(bS);
            Image1.Picture.Assign(Pic);
        finally
            Pic.Free;
        end;
        finally
        bS.Free
        end;
    end;end.