掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
JPEGで保存する(前回の続きです) (ID:123585)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 以前(2005/07/13)、『画像ファイル保存時にサイズを小さくするには?』で 一度解決とさせて頂いたのですが、完全に解決できていなかったので、 もう一度質問させてください。 前回、回答していただいた中で、魔界の仮面弁士さんにJPEG保存の方法を教えて頂きました。 その通りに保存を行い、そのJPEGファイルを確認したところ、 編集される前の画像が保存されていました。 Dim MyFile1 As String '初期画像のフルパス Dim MyFile2 As String '画像編集後の保存先フルパス Dim iCnt As Integer '画像の番号 Private Sub Form_Load() ①Call PreviewFile(MyFile1) 'Imageコントロールに画像の縦横比を計算して表示させるための関数 ②Picture1.Picture = LoadPicture(MyFile1) End Sub Private Sub Image1_MouseUp(Button As ......) ③'//ここでPictureBoxコントロールに描画の処理 ④MyFile2 = App.Path & "\Temp\TempF" & iCnt & ".jpg" ⑤SavePicture Picture1.Image, App.Path & MyFile2 ⑥DoEvents ⑦Call PreviewFile(MyFile2) 'ここでImageコントロールに編集後の画像の縦横比を計算して、再表示させている End Sub という処理を行っていたのを、 ⑤のSavePictureのところで、JPEGの保存をするために、 Dim Status As GDIPlusStatusConstants Status = SavePictureJpeg(Picture1.Picture, MyFile2, 70) と書き直し、保存の処理を行ってみました。 すると、保存されたのは③で編集したPicture1の画像ではなく、 ②で読み込んだ状態の画像のまま保存されていました。 以前解決としたのは、この問題を解決するために、 ⑦のあとに⑧として、Picture1.Picture = LoadPicture(MyFile2)と記述し、 別にボタンを追加し、 そのボタンクリックのイベント(Command1_Click)でJPEG保存の処理をしたら 問題なくできたので、解決としてしまいました。 ですが、これはサンプルプログラムで作ったもので、 (しかも保存先のファイル名は全く別のものを指定) 実際の流れでプログラムを組んでみると、25000KBのJPGファイルが生成されていました。 ①〜⑧のコード DoEvents Dim Status As GDIPlusStatusConstants ⑨Status = SavePictureJpeg(Picture1.Picture, MyFile2, 70) DoEvents その他、色々試したところ、 ⑨で保存先を別の名前(新規)で保存したら、 600KB〜1000KBのファイルが生成されているのが確認できました。 どうも、MyFile2と同じ名前で25000KBのファイル名が存在していると、駄目な様です。 (600KB〜1000KBのファイルが存在していて上書きするとOKでした。) 一番実現したいのは、⑤でSavePictureではなく、 ⑨のSavePictureJpeg(Picture1.Picture, MyFile2, 70)を行うことです。 (Picture1に実際に表示されている画像をそのまま保存) それが出来ないのであれば、⑨でJPEGファイル(600KB〜1000KB)で 上書きすることです。 長文、乱筆申し訳ありません。 宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.