Question: Is it possible to resize an image using tkinter only? If so, how can that be done?

Answer: 
You can resize a PhotoImage using the `zoom` and `subsample` methods. Both methods return a **new PhotoImage object**.

```
from tkinter import *
root = Tk()     #you must create an instance of Tk() first

image = PhotoImage(file='path/to/image.gif')
larger_image = image.zoom(2, 2)         #create a new image twice as large as the original
smaller_image = image.subsample(2, 2)   #create a new image half as large as the original

```

However, both of these methods can only take integer values as arguments, so the functionality is limited.

It is possible to scale by decimal values but it is slow and loses quality. The below code demonstrates scaling by 1.5x:

```
new_image = image.zoom(3, 3)            #this new image is 3x the original
new_image = new_image.subsample(2, 2)   #halve the size, it is now 1.5x the original

```
Just in case anyone comes across this for future reference, as I was looking for this myself earlier. You can use tkinter's PhotoImage => subsample method

I wouldn't say it really resizes in a certain sense but if you look up the documentation it returns the same image but skips X amount of pixels specified in the method. 

ie:

```
 import tkinter as tk
 root = tk.Tk()
 canvas = tk.Canvas(root, ....)
 canvas_image = tk.PhotoImage(file = path to some image)
 #Resizing
 canvas_image = canvas_image.subsample(2, 2) #See below for more: 
                                             #Shrinks the image by a factor of 2 effectively

 canvas.create_image(0, 0, image = canvas_image, anchor = "nw")
 self.canvas_image = canvas_image #or however you want to store a refernece so it's not collected as garbage in memory

```

So say our original image was 400x400 it is now effectively at 200x200. This is what I've been using when I need to compile a game or something I made and don't want to deal with PIL and it's compiling issues. 

However, other than the above reason I'd just use PIL.