<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>第７講 画像操作 on 2024年度 発展プログラミング演習（春学期）</title>
    <link>https://ksuap.github.io/2024spring/lesson07/index.html</link>
    <description>Recent content in 第７講 画像操作 on 2024年度 発展プログラミング演習（春学期）</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Thu, 13 Apr 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ksuap.github.io/2024spring/lesson07/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>画像の書き込み</title>
      <link>https://ksuap.github.io/2024spring/lesson07/write/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson07/write/index.html</guid>
      <description>画像の書き込み 画像生成 例題1 グラデーション画像 画像の書き出し サポートされている画像フォーマット 例外機構（Exception Architecture） 検査例外と非検査例外 例外の責任転嫁 InterruptedExceptionの責任転嫁 throws節 例題2. 画像の読み込み/書き込み 実行結果 画像の変換 練習問題 まとめ 画像生成 例題1 グラデーション画像 次のプログラムを作成して実行してみましょう．
import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File; import java.io.IOException;; public class Gradiation { void run() throws IOException { // 横幅 255，高さ 255 の画像を生成する． BufferedImage image = new BufferedImage(255, 255, BufferedImage.TYPE_INT_RGB); for(Integer x = 0; x &amp;lt; 255; x++) { for(Integer y = 0; y &amp;lt; 255; y++) { image.</description>
    </item>
    <item>
      <title>画像の変換</title>
      <link>https://ksuap.github.io/2024spring/lesson07/transform/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson07/transform/index.html</guid>
      <description>画像の書き込み 画像の変換 例題3. アフィン変換 度数法と弧度法の相互変換 参考資料 例題4. 画像の上下反転 例題5. 画像への書き込み 練習問題 まとめ 例題3. アフィン変換 画像に対して，平面上の変換を適用します． この変換は，平行移動，拡大・縮小，反転，回転，変形により構成されます． この変換のことをアフィン変換（Affine Transform）と呼びます． Java では，AffineTransform 型が変換の内容を表し， AffineTransformOp型がアフィン変換を適用する変換器を表します．
次の例題プログラムをコンパイル，実行してみましょう． コマンドライン引数で与えられた画像ファイルを90度回転させた画像が transformed.png に出力されます．
import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageTransformer { void run(String[] args) throws IOException { BufferedImage image = ImageIO.read(new File(args[0])); BufferedImage result = doFilter(image); ImageIO.write(result, &amp;#34;png&amp;#34;, new File(args[1]))); } BufferedImage doFilter(BufferedImage source) { // 画像の中心座標を中心に π/2 （90 度）回転させるアフィン変換を作成する． AffineTransform affine = AffineTransform.</description>
    </item>
    <item>
      <title>練習問題</title>
      <link>https://ksuap.github.io/2024spring/lesson07/assignments/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson07/assignments/index.html</guid>
      <description>画像の書き込み 画像の変換 練習問題 1. グラデーション2 実行例 ヒント 2. ファイルフォーマット変換 実行例 ヒント 3. グレースケール画像への変換 実行例 ヒント 4. 画像の回転 実行例 ヒント 5. 自由課題 まとめ 1. グラデーション2 実行例に示す画像のような255×255の画像を作成してください． 画像ファイル名は gradiation2.png とし，クラス名は Gradiation2 としてください．
実行例 ヒント 例題1を元に作成しましょう． setRGB に指定する色を以下のルールで指定すれば良いです． 右上が青であるため，xが大きくなるにつれ，青成分を増加させるようにしましょう． 左下が赤であるため，yが大きくなるにつれ，赤成分（y &amp;lt;&amp;lt; 16）を増加させましょう． 2つの成分を論理和で合成すると良いでしょう（x | y &amp;lt;&amp;lt; 16）． 2. ファイルフォーマット変換 2つのコマンドライン引数を受け取り，第１引数で与えられた画像を読み込み，第２引数で与えられたファイルに画像を出力してください． ただし，第２引数のファイル名の拡張子で指定されたフォーマットで画像を出力してください． クラス名は ImageFormatConverter としてください．
実行例 $ java ImageFormatConverter sample1.png a2-1.jpg $ file a2-1.jpg # 出力された a2-1.jpg のフォーマットを調べる． a2-1.jpg: JPEG image data, JFIF standard 1.</description>
    </item>
    <item>
      <title>まとめ</title>
      <link>https://ksuap.github.io/2024spring/lesson07/summary/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson07/summary/index.html</guid>
      <description>画像の書き込み 画像生成 例題1 グラデーション画像 画像の書き出し サポートされている画像フォーマット 例外機構（Exception Architecture） 検査例外と非検査例外 例外の責任転嫁 InterruptedExceptionの責任転嫁 throws節 例題2. 画像の読み込み/書き込み 実行結果 画像の変換 例題3. アフィン変換 度数法と弧度法の相互変換 参考資料 例題4. 画像の上下反転 例題5. 画像への書き込み 練習問題 1. グラデーション2 実行例 ヒント 2. ファイルフォーマット変換 実行例 ヒント 3. グレースケール画像への変換 実行例 ヒント 4. 画像の回転 実行例 ヒント 5. 自由課題 まとめ まとめ 画像を書き込むには，ImageIO.writeメソッドを用いる 対応フォーマットはBMP, GIF, JPEG, PNG, TIFF, WBMP． 画像を読み込むには，ImageIO.readメソッドを用いる 例外とは，エラー時に異常処理プロセスに自動的に移動できる機構のことである 検査例外と非検査例外がある． 検査例外は必ずプログラム中で対応する必要がある． 非検査例外はプログラム中でチェックを行うことで発生を避けられる メソッドの呼び出し元に責任を転嫁できる． この講義で紹介する画像の変換手法は次の通り． アフィン変換: 画像を２次元平面上での変換（回転，移動，拡大・縮小，反転，変形）を行う． 色の変換 画像への書き込み BufferedImageからGraphics2Dの実体を取得して，画像に書き込みができる． drawLine 直線を描く drawRectangle 四角形を描く drawOval 楕円を描く drawString 文字列を描画する． drawImage 画像を描画する． その他 Math.</description>
    </item>
  </channel>
</rss>