掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
JPEG画像を無劣化で回転するには (ID:48828)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
msdnのサンプルコードをよくわからないなりに翻訳してみました。 uses GDIPAPI, GDIPOBJ, GDIPUTIL procedure TForm1.buttonJpegRotate; var GdiplusStartupInput : TGdiplusStartupInput; GdiplusStartupOutput: TGdiplusStartupOutput; gdiplusToken : cardinal; encoderClsid : TGUID; encoderParameters : TEncoderParameters; transformation : TEncoderValue; stat : TStatus; begin // Initialize GDI+. GdiplusStartup(gdiplusToken, @GdiplusStartupInput, @GdiplusStartupOutput); //① Get a JPEG image from the disk. //Image* image = new Image(L"test1.jpg"); // Get the CLSID of the JPEG encoder. GetEncoderClsid('image/jpeg', &encoderClsid); // Rotate the image. encoderParameters.Count := 1; encoderParameters.Parameter[0].Guid := EncoderTransformation; encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues := 1; transformation := EncoderValueTransformRotate90; encoderParameters.Parameter[0].Value := @transformation; //② Save the image. //stat = image->Save(L"ShapesR90.jpg", &encoderClsid, &encoderParameters); GdiplusShutdown(gdiplusToken); end; ①②で imageクラスを使っているようなのですが、 Delphiで同じことをするにはどのようにしたらよいのでしょうか。 ところで、当該サイトの英文を翻訳してみたところ、 「画像の幅と高さが両方とも16の倍数の場合、画像の回転と保存のプロセスによって情報が失われることはありません。」 とありました。 これは単に当該コードの制限事項なのか、あるいはJpegの特性でひょっとして 画像の幅と高さが共に16の倍数の場合は、BitMapからJpegへ変換しても劣化しないということなのか ご存じの方はいらっしゃいますでしょうか。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.