PictureBoxの絵を解像度を指定して保存

解決


タメ子  2007-03-23 04:34:34  No: 135844

VB6で、PictureBoxに表示した絵を、解像度を指定(例えば、600dpi)して
保存する方法を教えて下さい。

検索すると、魔界の仮面弁士さんがGdipSaveImageToFile を使用して
JPEG保存されているのを見かけましたが、これを流用することで可能で
しょうか?


通ってみた  2007-03-23 21:27:42  No: 135845

dpiをどう指定するのか謎ですが、PictureBoxを指定の大きさに変更して、PaintPictureやらBitBltでコピーして保存したらいいと思いますが


通り巣鴨  2007-03-24 19:39:36  No: 135846

JPEG自体が複雑なのでよくわからなのですが
JFIFアプリケーションでしたら
JPEG形式で保存したのち
そのファイルからセグメントを抜き出す。
ピクセル濃度を変更する。って手順になるんですかね?

かなり適当なDPI変更のみのサンプル  そもそもフォーマットすらしらないのでwちょっと調べた結果です。
Public Type JFIF_SEG
    SOI_SEG As Integer
    APP0 As Integer
    SEG_LEN As Integer
    JFIF_Mark(5) As Byte
    Vers As Integer
    Unit As Byte
    X_den As Integer
    Y_den As Integer
    X_thumb As Integer
    Y_thumb As Integer
End Type

Public JFIF As JFIF_SEG
'////////////////////////////////////////////////////////////////////////////////////
'DPI変更 JpegFilePath=変更したいJPEGパス X_DPI=変更後の横DPI  Y_DPI=変更後の縦DPI
'////////////////////////////////////////////////////////////////////////////////////
Public Sub Change_SEG(JpegFilePath As String, X_DPI As Integer, Y_DPI As Integer)
Dim fno As Long
Dim errorflag As Boolean
    fno = FreeFile
        Open JpegFilePath For Binary As #fno
            Get #fno, , JFIF    'ファイルからセグメント取得
        Close #fno
        If JFIF.SOI_SEG <> &HD8FF Then errorflag = True 'SOIマーカーかチェック
        If JFIF.APP0 <> &HE0FF Then errorflag = True    'APP0かチェック
        If InStr(StrConv(JFIF.JFIF_Mark, vbUnicode), "JFIF") = 0 Then errorflag = True  'JFIFかチェック
            
        If errorflag = False Then
            JFIF.X_den = X_DPI
            JFIF.Y_den = Y_DPI
            
            fno = FreeFile
            Open JpegFilePath For Binary As #fno
                Put #fno, , JFIF
            Close #fno
        Else
            MsgBox "未対応形式", vbCritical, "エラー"
        End If
End Sub


通り巣鴨  2007-03-24 19:40:53  No: 135847

Public JFIF As JFIF_SEG
これパブリックの意味がないや。


Hongliang  URL  2007-03-24 22:31:49  No: 135848

GDI+ 使うなら GdipBitmapSetResolution かな。
日本語の解説サイトはなさそうですけど。


タメ子  2007-03-26 23:07:51  No: 135849

通ってみたさん
通り巣鴨さん
Hongliangさん

ご回答ありがとうございます。
ご回答頂いた内容で一度トライしてみます。


タメ子  2007-04-18 20:50:01  No: 135850

すみません。「解決」をチェックしてませんでした。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加