PDA

View Full Version : [Q] Help me: Lỗi khi load ảnh!?



hueduongit
17-02-2003, 10:35
Một lỗi xuất hiện khi load ảnh:
.....
fs là một FileStream
//Show image
picView.Image = Image.FromStream(fs); Lỗi ở dòng này
.....
Khi dữ liệu của fs được tạo từ định dạng của ảnh jpg thì Ok, còn từ gif là xuất hiện lỗi này: 'A generic error occurred in GDI+.'
(Dữ liệu của các file jpg và gif đều được lưu vào database, sau đó đọc từ database để load lên)

//
Còn khi load ảnh từ một file ảnh (được tạo từ database). Load lần thứ nhất thì Ok. Nhưng lần thứ 2: khi ta đụng đến file này (fs = new FileStream(strPath,FileMode.Create,FileAccess.Read Write); hay File.Delete(strPath)) thì được báo là file này đang được dùng.
Có phải sau khi được load rồi (picView.Image = Image.FromFile(strPath);) vẫn còn cái gì đó giữ file này!

White_Rose
17-02-2003, 21:26
Thì cái FileStream chứ còn cái nào "giữ" file nữa. Trước khi làm thì thay đổi, bạn phải close() nó đi đã.

hueduongit
19-02-2003, 10:55
Tất nhiên, mình đã thực hiện việc đóng rồi.

cafesuada
27-06-2009, 09:59
Chào các bạn. Mình cũng làm 1 ứng dụng có liên quan đến load hình ảnh từ database.
Mình dùng 2 hàm này để thêm và lấy lên từ database:


public static byte[] ImageToByteArray(Image image)
{
if (image != null)
{
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Bmp);
return stream.ToArray();
}
else
{
return null;
}
}

public static Image ByteArrayToImage(byte[] bytes)
{
Image img = null;
if (bytes != null)
{
MemoryStream stream = new MemoryStream(bytes);
img = Image.FromStream(stream);
}
return img;
}

Hàm thêm thì ổn còn hàm load thì bị lỗi này : 'Parameter is not valid'.
Mong được các bạn giúp đỡ. À ngoài ra mình muốn giới hạn kích thước hay thay đổi kích thước khi thêm mà ko biết làm thế nào. Mong các bạn giúp đỡ.
Thanks

dq_ninh
27-06-2009, 11:59
Một lỗi xuất hiện khi load ảnh:
.....
fs là một FileStream
//Show image
picView.Image = Image.FromStream(fs); Lỗi ở dòng này
.....
Khi dữ liệu của fs được tạo từ định dạng của ảnh jpg thì Ok, còn từ gif là xuất hiện lỗi này: 'A generic error occurred in GDI+.'
(Dữ liệu của các file jpg và gif đều được lưu vào database, sau đó đọc từ database để load lên)

//
Còn khi load ảnh từ một file ảnh (được tạo từ database). Load lần thứ nhất thì Ok. Nhưng lần thứ 2: khi ta đụng đến file này (fs = new FileStream(strPath,FileMode.Create,FileAccess.Read Write); hay File.Delete(strPath)) thì được báo là file này đang được dùng.
Có phải sau khi được load rồi (picView.Image = Image.FromFile(strPath);) vẫn còn cái gì đó giữ file này!


Bạn thân. Gif file là dạng file vẫn còn ...tác quyền (và tác giả của gif file đã kiếm được hàng chục triệu đô la). Cho nên, hầu như sau này, những ấn bản mới của Microsoft đều không dùng gif file được nữa, và sẽ bị lỗi, vì Microsoft không muốn trả tiền bản quyền cho tác giả của gif file (MS nghĩ rằng tác giả của gif file đã được hưởng lợi quá nhiều cho một tác phẩm cũng chẳng lấy gì làm đặc sắc và công phu cho lắm - và tôi hoàn toàn đồng ý với MS)

Cho nên, nếu bạn muốn dùng một hình ảnh nào đó còn thuộc dạng gif, hãy chuyển nó qua .png trước. Và hãy như tôi, chúng ta nên tẩy chay gif file. Cái tối ưu của gif file là animation. Nếu bạn không cần đến animation, đừng dùng gif file.

Điểm tối ưu của png file là 1) thông dụng trên tất cả các browser và 2) transpa rency.