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?
LVL 2
synergiqAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP

From novice to tech pro — start learning today.