[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 728
  • Last Modified:

Crop Binary Image ASP

I have some images saved in a database as binary. I need to crop the images and re-save them as binary into the database.

How can I do this with classic ASP?
0
synergiq
Asked:
synergiq
  • 4
  • 3
1 Solution
 
sybeCommented:
For classic ASP, You need a third party component to do this. Like ASPJPEG (http://www.aspjpeg.com/index.html). I don't know of any non-commercial third party component which can do this.

Alternatively there are some freeware desktop applications which can crop in batch. You could write a vbscript (.vbs) to pull the images from the database to hd, use that tool to batch-crop them and then another vbscript to put the cropped binaries into the database.

But that is probably not going to function live in a web-application.
0
 
synergiqAuthor Commented:
Ok. So using ASPJPEG, I've managed to get the image from the DB, crop it to the correct dimensions but now I need to put it back into the DB. Trying to just do an update doesn't work, do I need to do something/convert it to something first?

I'm using a Sybase database if that means anything.
0
 
sybeCommented:
How are you trying to do that?

I'd read the binary of the image into a ADODB.Stream and from that update a recordset, using the AppendChunk method:

http://www.w3schools.com/ado/met_para_appendchunk.asp
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
synergiqAuthor Commented:
Could you give me an example of how I would do that?
0
 
sybeCommented:
This is the basic code. Of course you might to do things in a loop, and with Option Explicit you need to DIM the variables.


Set oStream = Server.CreateObject("ADODB.Stream")
oStream.Type = 1 ' adTypeBinary
oStream.LoadFromFile "c:\files\image_1.jpg"

Set oRS = Server.CreateObject("ADODB.RecordSet")
oRS.Open "SELECT fieldname FROM mytable WHERE id = 967",  MyConnection, 1, 3
oRS("fieldname").AppendChunk oStream.Read
oRS.Update
oRS.Close

Open in new window

0
 
synergiqAuthor Commented:
I don't have access to the actual image to stream though, only the Jpeg.Binary I get from ASPJPEG.

The code below gets the image from the DB (as binary), opens it with ASPJPEG and crops it. Now I just need to put it back in the DB in place of the old one.
Set GetImg_cmd = Server.CreateObject ("ADODB.Command")
GetImg_cmd.ActiveConnection = MM_MobliqConn_STRING
GetImg_cmd.CommandText = "select image_field from table where image_id = '1234'"
GetImg_cmd.Prepared = true
Set GetImg = GetImg_cmd.Execute
GetImg_numRows = 0


Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.OpenBinary(GetImg("image_field").value)
Jpeg.Crop 0, 0, 80, 60

GetImg.close()
set GetImg= nothing

Open in new window

0
 
synergiqAuthor Commented:
I've just cracked it. Thanks for the help!
Set rs = Server.CreateObject("adodb.recordset")
rs.Open "select image_field from table where fimage_id = '1234'", myConn, 1, 3
rs("image_field").AppendChunk Jpeg.Binary
rs.Update
rs.Close

Open in new window

0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now