> ## Content Index
> Fetch the complete content index at: https://www.geekjp.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# python3とpycharmとpygameで画像表示してみた　第３回
- URL: https://www.geekjp.com/2019-10-08-013716/
- Published: 2019-10-07T16:37:16.000Z
- Updated: 2026-07-31T16:26:07.000Z
- Description: Pygameで読み込んだ画像をプログラム上で拡大・縮小する方法を紹介。pygame.transform.smoothscaleを使い、倍率から変換後の幅と高さを計算して表示します。
- Author: 工学じじい
- Tags: ゲームプログラミング, 技術, Pygame, Python, プログラミング, #Import 2026-07-19 20:21, #Import 2026-07-19 20:24

## 画像を拡大縮小してみる

# python3とpycharmとpygameで画像表示してみた 第３回

## 画像を拡大縮小してみる

- [画像を拡大縮小してみる](#%E7%94%BB%E5%83%8F%E3%82%92%E6%8B%A1%E5%A4%A7%E7%B8%AE%E5%B0%8F%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)  
  - [使うもの](#%E4%BD%BF%E3%81%86%E3%82%82%E3%81%AE)
  - [使うモジュール](#%E4%BD%BF%E3%81%86%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB)
  - [スクリプトを変更](#%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%A4%89%E6%9B%B4)
  - [実行例（ratio=0.2）](#%E5%AE%9F%E8%A1%8C%E4%BE%8Bratio02)
  - [実行例（ratio=2.0）](#%E5%AE%9F%E8%A1%8C%E4%BE%8Bratio20)
- [所感](#%E6%89%80%E6%84%9F)

### 使うもの

- 前回のプロジェクト
- 前回のスクリプト
- 前回の画像

前回までで、画像を表示できたのですが、画像を張り付けるときに拡大縮小をしてみます。  
画像自体のサイズを変えてもいいのですが、今回は読み込んだ画像をプログラムの中で拡大縮小してみました。

### 使うモジュール

| **pygame.transformモジュール** |
| ------------------------- |

を使います。  
**pygame.taransform**モジュールには、いくつか拡大縮小ができるメソッドがあります。

| モジュール                            | 機能                | 備考                                                              |
| -------------------------------- | ----------------- | --------------------------------------------------------------- |
| **pygame.taransform.scale**      | 指定Surfaceの拡大縮小を行う | 速さ重視で拡大縮小                                                       |
| **pygame.transform.smoothscale** | 指定Surfaceの拡大縮小を行う | 見た目重視で拡大縮小[\*1](#f-6a4e442a "拡大縮小に適用されるフィルタも指定できますが、ここでは割愛します") |

それぞれ引数は、(surface, (width, height)) で、変換後のsurfaceを返すメソッドになっています。

### スクリプトを変更

今回は、pygame.transform.smoothscaleメソッドを使って拡大縮小してみます。  
こっちのメソッドにした意味は。。。特にないです。なんとなく。

[Gistのソースコードを直接開く](https://gist.github.com/gomta777/8abe3dd3c81a977dd5466c5ac278644f?ref=geekjp.com)

mainの中をこう変更します。  
やっていることは、

1. imagerectに元画像の幅と高さを記録
2. ratioに拡大縮小率を決定
3. ratioとimagerect.widthを使って変換後の画像幅を計算
4. ratioとimagerect.heightを使って変換後の画像高を計算
5. 元画像(image)を(imagerect.width, imagerect.height)の大きさに変換

となっています。

### 実行例（ratio=0.2）

![f:id:gomta777:20191008004321p:image:w200](https://www.geekjp.com/content/files/images/import/hatena/2019/10/20191008004321.png "f:id:gomta777:20191008004321p:image:w200")

図：ratio=0.2の時の実行例

ちゃんと縮んでますね！

### 実行例（ratio=2.0）

![f:id:gomta777:20191008004321p:image:w200](https://www.geekjp.com/content/files/images/import/hatena/2019/10/20191008004321.png "f:id:gomta777:20191008004321p:image:w200")

図：ratio=2.0の時の実行例

こちらもちゃんと拡大されています！

## 所感

拡大縮小も簡単にできました。  
実は、紹介したメソッドのほかにも、拡大縮小できるメソッドが幾つかあります。

| メソッド                                             | 戻り値     | 機能           |
| ------------------------------------------------ | ------- | ------------ |
| pygame.transform.rotozoom(Surface, angle, scale) | surface | 拡大縮小回転を同時に行う |
| pygame.transform.scale2x(Surface)                | surface | 画像を２倍に拡大     |

pygame.transform.smoothscaleのところを変更するだけなので試してみると面白いと思います。

![f:id:gomta777:20191008012537p:image:w200](https://www.geekjp.com/content/files/images/import/hatena/2019/10/20191008012537.png "f:id:gomta777:20191008012537p:image:w200")

図：pygame.transform.rotozoom(image, -45.0, 0.5)の例

こんけできれば、いろんたごだやれそんたなっす！[\*2](#f-9b71d486)  
へだば、まだ。[\*3](#f-ceebb0b7)

|                                    |
| ---------------------------------- |
| 12歳からはじめる ゼロからの Pythonゲームプログラミング教室 |

[\*1](#fn-6a4e442a):拡大縮小に適用されるフィルタも指定できますが、ここでは割愛します

[\*2](#fn-9b71d486):このぐらいできれば、いろんなことができそうですね

[\*3](#fn-ceebb0b7):それじゃ、また！